向人们学习PHP的OOP设计解释这个和自我

时间:2014-05-02 10:19:01

标签: php oop this

我正在尝试教一些朋友PHP,我正试图解释$this->如何在没有技术术语的情况下工作。我相信一旦我让他们超越了这种理解,我实际上可以开始教他们如何使用OOP进行编码。

我正在教授的人员使用extendspublicprivate和{{1}了解如何使用类,变量以及它们如何相互交互函数和变量的范围。

唯一能阻止他们的是向他们解释protected$this->。我试着 dumb it down 说"当你引用一个类变量时,你将使用self::"在函数中调用它,参考class的变量,因为我们在类中而不是在函数本身中定义它。

有没有更好,更简单的方法向正在学习PHP的OOP设计的人解释这个?

我也注意到,一旦你进入编程语言,你就会习惯使用这些方法而不考虑它们。对我来说,如果不使用技术术语来解释如何使用这些方法,很难回到基础。

2 个答案:

答案 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相同的地方。

希望这种解释非常容易理解。