php在类方法里调用了一个未定义的属性,系统为什么会自动生成这个属性?

如题所述

我看你的代码里面$name和$this->aaa都是定义了的,怎么会没有定义呢。
你在实例化A类的时候带了参数进去,那么类里面的name变量就有了值。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-12-30
在 __construct() 构造函数里面定义 也算啊

php在类方法里调用了一个未定义的属性,系统为什么会自动生成这个属性...
你在实例化A类的时候带了参数进去,那么类里面的name变量就有了值。

PHP中常用的11个魔术方法
1. __get 和 __set 这两个方法分别用于获取和设置未声明的属性。当尝试访问或设置类实例中未定义的属性时,PHP会自动调用这些方法。它们特别适用于处理私有或受保护属性。2. __isset 和 __unset 当检查未定义的属性是否存在或删除时,会触发__isset和__unset方法。与前两个方法类似,它们也处理私...

如何在php类中执行某方法的时候自动执行另一个方法?比如我执行数据插入...
PHP没有事件机制。有一些模拟事件的方法,但我觉得代码太繁琐了,不实用。这里我向你推荐PHP的魔术方法。魔术方法会在调用一个不存在或是非公有的方法之前,自动根据某种规则调用另外一个方法。比如下面的类就是了这样:在调用insert方法时,判断类中是否有before_insert方法。如果有则先调用before_insert方...

为什么php会报错:未定义的函数?
原因3:你在老版本的PHP下调用新版本的PHP内置函数而产生的错误。因为你的老版本中这个PHP内置函数根本就不存在。例如,你在PHP老版本中调用mime_content_type()Fatal error:Call to undefinedfunction mime_content_type()解决:翻开PHP手册仔细核对你所使用的内置函数到底适用于PHP的哪些版本。在PHP手册...

php中的类是单继承,那要有多个类继承怎么办?
PHP没有多继承的特性。即使是一门支持多继承的编程语言,我们也很少会使用这个特性。在大多数人看来,多继承不是一种好的设计方法。想要给某个类添加额外的特性,不一定要使用继承。这里我提供一种模拟多继承的方法以供参考。PHP有一个魔术方法,叫做__call。当你调用一个不存在的方法时,这个方法会被...

在php中如何设置类的属性,如何调用类的方法?
phpclass MyClass { \/\/ 定义MyClass类 public $name; \/\/ 定义了一个公有属性 protected $_age; \/\/ 定义了一个保护属性 private $_email; \/\/ 定义了一个私有属性 public function my_method() { \/\/ 定义my_method方法 } protected function _my_method2() { \/\/ 定义...

PHP中类的属性在类中调用只必须使用$this吗?
在函数中$this就表示“这个”的意思,表明了这个属性或方法是当前方法的 我稍微改了一下你的例子:?php class Test { public a=1;public b=2;function sd(){ echo this- a;} } x= new Test();x->sd();?> 要想输出要实例化类,也就是建一个对象来调用它,建议你可以看看php100的视频...

php中根据类名怎么动态获取已定义的类对象并动态调用某个方法?
在 PHP 中,可以通过类名来动态获取已定义的类对象,然后再调用类的方法。可以使用以下两个函数来实现:1. `class_exists()` 函数可以判断一个类是否已经定义。2. `call_user_func()` 函数可以动态调用一个方法。下面是示例代码:```\/\/ 判断类是否已定义 if (class_exists('ClassName')) { \/...

php中常用的魔术方法有哪些?
php规定以两个下划线__开头的方法都保留为魔术方法,建议自定义函数的函数名最好避开。__construct() 实例化类时自动调用。__destruct() 类对象使用结束时自动调用。__set() 在给未定义的属性赋值的时候调用。__get() 调用未定义的属性时候调用。__isset() 使用isset()或empty()函数时候会调用。_...

PHP继承的问题,调用父类的方法this指向问题。
而最有意思的是,在$li句柄中,我们却看到了两个属性!一个是b类的属性,一个是a类的属性,这两个属性同时存在着,那么,私有方法也自然是同时存在着。【三】………私有属性和方法能不能被继承………class a{private $var = 'var a ';private function m(){echo 'fun a ';}}class b ext...

相似回答