我正在尝试教一些朋友PHP,我正试图解释$this->
如何在没有技术术语的情况下工作。我相信一旦我让他们超越了这种理解,我实际上可以开始教他们如何使用OOP进行编码。
我正在教授的人员使用extends
,public
,private
和{{1}了解如何使用类,变量以及它们如何相互交互函数和变量的范围。
唯一能阻止他们的是向他们解释protected
和$this->
。我试着 dumb it down 说"当你引用一个类变量时,你将使用self::
"在函数中调用它,参考class的变量,因为我们在类中而不是在函数本身中定义它。
有没有更好,更简单的方法向正在学习PHP的OOP设计的人解释这个?
我也注意到,一旦你进入编程语言,你就会习惯使用这些方法而不考虑它们。对我来说,如果不使用技术术语来解释如何使用这些方法,很难回到基础。
答案 0 :(得分:1)
您可以尝试这样的事情:
每辆车都有燃料($fuel
)。
但是,如果你在车里,你不想知道其他车的燃料,你想知道你的车的燃料。
所以你就像$this->fuel
我认为这应该足够简单而不会失去很多准确性。
答案 1 :(得分:0)
当你有一个类 - 现有对象 - 例如:
class Object
{
protected $variable;
public function method($param) {}
}
$this
只是告诉ME
的一种方式。
例如,当你开始进食并开始进食时,就像那样
ME::getSpoon();
ME::UseSPoonToFetchSoup();
ME::BringSpoonToMouth();
ME::PutSpoonInMouth();
ME::TakeSpoonOut();
ME::Swallow():
然后重复一些步骤。
ME
是您自己的参考。如果你考虑一下 - 这个算法适用于几乎所有人,并且每个现有的人都可以使用它 - 只记得ME
是用勺子吃汤的实际人类。
同样是对象。在此示例中,如果您将代码更改为
class Object
{
protected $variable = 0;
public function method($param = 1) {$this->variable += $param; return $this->variable;}
}
执行不带参数的方法method();
将添加到$variable
1的对象OWN内存位置,然后告诉您新的总和。
$obj1 = new Object();
$obj2 = new Object();
echo "Obj1: " .$obj->method(10).'<br/>'; //this will print 10
echo "Obj2: " .$obj->method(2).'<br/>'; //;this will print 2
此对象必须知道who they are
因此需要知道引用,这就是$this
相同的地方。
希望这种解释非常容易理解。