类中使用的PHP类?
我知道类中使用的PHP类?,php,class,Php,Class,我知道$something->function()在类中调用函数,但什么是$something->somethingelse->function()意思?我猜你的意思是$something->somethingelse->function() 这意味着名为$somethingelse的$something>属性是另一个具有方法function()的对象 实例$something的类包含一个名为$somethingelse的实例变量,该变量也是一个对象(类的实例) 这被认为是一种不好的做法(参见)
$something->function()
在类中调用函数,但什么是$something->somethingelse->function()代码>意思?我猜你的意思是$something->somethingelse->function()
这意味着名为$somethingelse
的$something>属性是另一个具有方法function()
的对象
实例$something的类包含一个名为$somethingelse的实例变量,该变量也是一个对象(类的实例)
这被认为是一种不好的做法(参见)
彼得·范·鲁伊金的故事有一个很好的解释:
你可以自己玩
你可以玩你自己的玩具(但你不能把它们拆开)
你可以玩给你的玩具
你可以玩你自己做的玩具
用通俗易懂的英语说:
您的方法可以直接调用其类中的其他方法
您的方法可以直接在自己的字段上调用方法(但不能在字段的字段上)
当您的方法获取参数时,您的方法可以直接调用这些参数上的方法
当您的方法创建本地对象时,该方法可以调用
本地对象
但是
不应该对全局对象调用方法
在a的类以外的其他类中,不应该有一个消息链a.getB().getC().doSomething()
另一个有趣的阅读是关于不那么严格的方法。你可以这样说:
class foo {
public $bar;
}
class bar {
public $baz;
}
class baz {
function blip() { echo "Hello World"; }
}
$foo = new foo();
$foo->bar = new bar(); // setting bar to new object
$foo->bar->baz = new baz(); // setting baz to new object
$foo->bar->baz->blip(); // calling the blip function
你确定它是$something->$somethingelse->function()代码>而不是$something->somethingelse->function()
或$something->somethingelse()->function()代码>?哦,这是为了什么?@user658911目的是在该类中拥有该对象的功能。它被称为模式,所以你会用它来使用一个数据库对象,比如$addusers->db=$db;其中$db是一个类。@例如,用户是的,没错。我不同意这通常是一种不好的做法。像这样的模式如果没有itdependency注入就无法工作,而是将$somethingelse的实例注入到$something中,而不必使用新的inside$something创建它(这将巩固依赖关系)。它不是关于公开那些依赖项,什么应该是类的“私有部分”。你可以让它只写一个setter。我改变了它,所以它的工作原理完全一样。我不知道var被弃用了-谢谢
class foo {
public $bar;
}
class bar {
public $baz;
}
class baz {
function blip() { echo "Hello World"; }
}
$foo = new foo();
$foo->bar = new bar(); // setting bar to new object
$foo->bar->baz = new baz(); // setting baz to new object
$foo->bar->baz->blip(); // calling the blip function