当前位置:首页 » 编程语言 » php私有属性

php私有属性

发布时间: 2025-06-18 23:39:24

php弹出“undefined property:stdclass” ,怎么解决

这种情况一般是你对一个类对象,使用了属性调用造成的。

比如应该是

echo$a->att1;


你写错成了:

echo$a['att1'];


改回来就可以了。

PHP中使用关键字 class 来定义一个类。类的命名一般使用首字符大写,而后每个单词首字符大写连接的方式方便阅读。


在PHP5中,属性指在class 中声明的变量。在声明变量时,必须使用 public private protected 之一进行修饰,定义变量的访问权限。PHP中的属性:用来描述对象的数据元素称为对象的属性(也称为数据/状态)

Public(公开): 可以自由的在类的内部外部读取、修改。


Private(私有): 只能在这个当前类的内部读取、修改。


Protected(受保护):能够在这个类和类的子类中读取和修改。属性的使用:通过引用变量的 -> 符号调用变量指向对象的属性。


在方法内部通过 $this-> 符号调用同一对象的属性。

所以应该用箭头调用而不是括号。

⑵ 在PHP里,子类是不是可以继承父类的私有属性,但不能访问啊

用print_r来检测一下这个对象
注释掉的时候
print_r($s1);
Student Object
(
[name:Person:private] => ys
)
告诉我们name是Person类私有的属性

当没注释掉的时候
print_r($s1);
Student Object
(
[name:Person:private] => ys
[name] => 子类
)
告诉我们name是Person类私有的属性,有给Student类添加了一个name属性
我们还注释掉,再修改如下
$s1 = new Student();
$s1->name = '子类'; //添加一个属性为name

$s1->say();
跟上面一样的结果

从这些调试结果分析,继承跟访问可以这样说是一个概念,私有不可以继承过来。
你继承的时候加的那个$this->name是又新添加了一个name属性,跟父类的name属性无关

⑶ php中Get方法跟Post方法的区别

php中Get方法跟Post方法的区别

php——get方法

这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,这个方法不用手工的去调用,因为也可以把这个方法做成私有的方法,是在直接获取私有属性的时候对象自动调用的。

因为私有属性已经被封装上了,是不能直接获取值的,但是如果你在类里面加上了这个方法,在使用“echo$p1->name”这样的语句直接获取值的时候就会自动调用__get($name)方法,将属性name传给参数$name,通过这个方法的内部执行,返回传入的.私有属性的值。

如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。

php——post方法

这个方法用于传送数据,用法与get方法类似,但有区别。

区别

Get方法在超链接后边紧跟要传递的参数对于用户是可见的如:%D6%A3%D6%DD%B4%F3%D1%A7&fr=index&ie=utf-8

而Post方法传递的参数是不可见的。

GET是从服务器上获取数据;POST是向服务器传送数据。

在客户端,GET通过URL提交数据,数据在URL中可见;POST把数据放在form的数据体内提交。

GET提交的数据最多只有1024字节;POST提交的数据量无限制。

由于使用GET时,参数会显示在地址栏上,而POST不会,所以,如果这些数据是非敏感数据,那么使用GET;如果包含敏感数据,为了安全,用POST方法。

;

⑷ php,子类无法访问父类私有属性,子类实例化再赋值后,子类所添加的新成员属性不存在

我把涉及到这个问题的知识点,可以和大家分享一下:
1.父类humanBeing , 子类student , 实例对象 $m (注意:$m是子类student 的实例,和humanBeijing没有直接关系)
2.private 的属性.仅在本类里使用;任何子类、实例对象都无法访问,更别说赋值。这个在书本上都一直是这么说滴。。哈哈。。。

根据以上知识点,来看你这个问题:
$student1=new student;
/*实例一个student的对象,此时注意,这个对象并不会继承父类humanBeing的三个 private变量$name,$age,$gender*/

$student1->name='zhangsan';
$student1->age=20;
$student1->gender='male';
/*这里需要注意.很多人会误以为是给父类humanBeing的三个属性赋值了,这是错的。这里的赋值,仅仅是给子类student的三个属性赋值,这里也许会有人问,子类student那有什么属性呀?在php中,所有的变量,不要求申明,在类中属性也是一样的,不要求申明,而且类中,默认都是public。所以上面的这三行代码,仅仅是子类student的三个属性赋值,和父类humanBeing的三个属性,没有任何关系,仅仅名字一样而已*/

function say(){
echo "My name is {$this->name} and I am {$this->age} years old. I am {$this->gender}.<br />";
}
/*这个是父类humanBeing的公有方法,(默认的是public的),这个方法中 $this -> name.这里的$this 是指父类student,$this -> name是指父类student的属性,从始至终,它并没有被赋值,所以它是空的,(而且它也不能被赋值,因为是private),这里的$student1->name='zhangsan';赋值操作,仅仅是修改子类student的$name */

我想这么回答,你应该非常清楚了吧

再来理解后面的例子,就很容易了。
$m->name="zhangsan";
/*仅仅是给子类Man的属性赋值,而且因为可以省略声明,默认又是public的,所以能直接赋值,当然也可以输出了*/

class Person{
private $name;
}
/*可以直接把private $name;去掉,因为后面的赋值,跟它没有任何关系,直接修改成*/
class Person{
}

⑸ PHP中常用的11个魔术方法

在PHP中,常用的11个魔术方法及其功能概述如下:

  1. __get 和 __set

    • __get:用于获取未声明的属性。
    • __set:用于设置未声明的属性。
    • 这两个方法特别适用于处理私有或受保护属性的访问。
  2. __isset 和 __unset

    • __isset:用于检查未定义的属性是否存在。
    • __unset:用于删除未定义的属性。
    • 这两个方法也处理私有或受保护属性的访问控制。
  3. __call

    • 当尝试调用未声明的方法时,此方法会被调用。
    • 对于实现方法重载或执行自定义行为非常有用。
  4. __autoload

    • 自动加载类的功能。
    • 当尝试使用尚未定义的类时,此方法会被调用,允许在类未被直接加载前加载它们。
  5. __construct 和 __destruct

    • __construct:构造方法,在实例创建时执行,用于初始化对象。
    • __destruct:析构方法,在对象销毁时执行,用于释放资源。
  6. __clone

    • 在对象复制时,此方法被自动调用。
    • 使用clone语句复制对象时,用于执行任何额外的初始化操作。
  7. __toString

    • 当尝试将对象转换为字符串时,此方法会被调用。
    • 确保对象可以被正确显示。
  8. __sleep 和 __wakeup

    • __sleep:在对象序列化前执行,用于清理不需要存储的对象状态。
    • __wakeup:在反序列化后执行,用于重建任何被序列化时丢失的资源。
  9. __set_state

    • 当调用var_export函数时,此方法被调用。
    • 用于反序列化对象状态。
  10. __invoke

    • 当尝试以函数调用方式调用对象时,此方法被自动调用。
    • 实现对象作为函数的使用。
  11. __callStatic

    • 与__call方法类似,但用于处理静态方法的调用。
    • 确保静态方法的正确执行。

这些魔术方法极大地增强了PHP类的灵活性和功能,允许开发者以更简洁的方式实现复杂的功能。在使用时,应确保所有魔术方法都被定义为公共的,以确保它们的正确执行。

⑹ php类属性的赋值问题

cache_factory::$cache_factory 是 类 cache_factory 的一个单例 , 该语句的意思是给 这个单例实例的cache_config属性赋初值,我这么说能听懂吗?!

享笑网为您解答。可以来我们这里看看,有不清楚的,我再给你解释。

⑺ 在php中如何设置类的属性,如何调用类的方法

PHP访问类的属性、方法使用箭头语法(->)。这里我给你一个例子供你参考:

<?php
classMyClass{//定义MyClass类
public$name;//定义了一个公有属性
protected$_age;//定义了一个保护属性
private$_email;//定义了一个私有属性

publicfunctionmy_method(){//定义my_method方法
}

protectedfunction_my_method2(){//定义_my_method2方法
}
}
$obj=newMyClass;//实例化
$obj->name='noname';//设置name属性
$obj->_age=12;//这是错误的,不能设置保护属性
$obj->address='KingStreet.'//设置一个未声明的属性是允许的,效果和公有属性类似,但未赋值前不能使用。
$obj->my_method()//调用公有方法
$obj->_my_method2();//这是错误的,不能调用保护方法

你需要理解继承、公有、保护和私有的概念。

继承:子类继承父类的公有、保护属性和方法。

公有:类的实例可以访问的属性和方法。

保护:只能在类的内部及其子类内部访问的属性和方法。

私有:只能在类的内部访问的属性和方法。


这是个很基础的问题,建议你多看书。

⑻ php菜鸟提问~面向对象里的对私有字段成员的赋值取值操作时采用拦截器……

现在,老师只是给你看了个简单的例子


实际用途中,是很有用的,比如你需要传入大量的变量 或者 你需要赋值的变量需要进行安全判断或者类型判断等。 下面是一个简单的例子,希望可以帮到你

classcla{

private$a=array();

publicfunction__set($key,$value){
$this->a[$key]=$value;
}

publicfunction__get($key){

return$this->a[$key];
}
}

$cla=newcla();

$cla->b1='b1';
$cla->b2='b2';

echo$cla->b1;
echo'<br>';
echo$cla->b2;

这个代码 在很多接口调用中,经常用到

热点内容
php上传图片获取路径 发布:2025-06-19 04:52:37 浏览:995
cdn缓存方案 发布:2025-06-19 04:46:09 浏览:501
存储转换工具 发布:2025-06-19 04:38:39 浏览:930
密码哪里修改 发布:2025-06-19 04:33:02 浏览:521
如何iphone新建文件夹 发布:2025-06-19 04:27:12 浏览:222
phpnet哪个好 发布:2025-06-19 04:05:15 浏览:619
登录安卓壁纸直接闪退怎么回事 发布:2025-06-19 04:02:16 浏览:976
番剧动漫源码 发布:2025-06-19 03:50:16 浏览:434
电脑连接登录AD服务器 发布:2025-06-19 03:46:06 浏览:494
yy注册源码易语言 发布:2025-06-19 03:46:04 浏览:26