我有两个实现相同接口的类。
在第一类中,我有一个名为author的数组变量。通常,为了在同一类中的两个不同函数之间传递变量,一旦设置了$this->author;
,我就会使用它。
这在两个班之间似乎不起作用。有人能澄清一下我将如何调用第二类中第一类的变量吗?
谢谢!
http://php.net/manual/en/language.oop5.php用于面向对象设计概念的命名。
使用$this->author
时,不会在函数之间传递变量。这两个函数引用了两个函数所属对象的同一变量
author
是类的一个属性。
没有一个地方可以放置一个变量并让它被两个不同的类引用。但是,您可以在一个类上使用public
属性,并从任何其他类引用该属性。
http://php.net/manual/en/language.oop5.visibility.php公共财产。
但这种技术并不能捕捉到两个函数引用一个公共属性的方案。
您可以使用特性(水平继承)http://php.net/manual/es/language.oop5.traits.php
尽管只有当您的变量只被查询而不被修改时,它才会对您有所帮助。这是因为,traits允许您指定静态属性,但使用该trait的每个类都有这些属性的独立实例。
http://php.net/manual/es/language.oop5.traits.php#107965
这是一个例子:
trait myTrait {
public $sameVariable = 'shared';
public function getMessage() {
echo $this->sameVariable;
}
}
class A {
use myTrait;
public function getMessageA() {
echo $this->sameVariable; //Prints shared
$this->sameVariable = 'changed';
echo $this->sameVariable; //prints changed
}
}
class B {
use myTrait;
public function getMessageB() {
echo $this->sameVariable; //Prints shared
}
}
$a = new A();
$b = new B();
$a->getMessageA();
$b->getMessageB();
这允许您重用Trait中的变量,而不是重复您的代码,但我不太理解您的情况。因此,这可能不是您想要的=/