Php 将变量传递给类
这是一个场景: 共有3类:A类、B类、C类Php 将变量传递给类,php,inheritance,Php,Inheritance,这是一个场景: 共有3类:A类、B类、C类 //A.php class A { public $something1; public $something2; //long list.... // i am the base class } //B.php class B extends A { // i am a child of A } //C.php class C extends A{ // i do the side work } 程序生成一个对象,并设置B类的值
//A.php
class A {
public $something1;
public $something2;
//long list....
// i am the base class
}
//B.php
class B extends A {
// i am a child of A
}
//C.php
class C extends A{
// i do the side work
}
程序生成一个对象,并设置B类的值,如下所示:
$b = new B();
$b->something1 = "XYZ";
$b->something2 = "ABC";
...... long list.....
$c->something1 = $this->something1;
$c->something2 = $this->something2 .....
class A {
public static $foo;
}
class B extends A {}
class C extends A {}
# usage:
B::$foo = 'bar';
echo C::$foo; // will output 'bar'
现在我想要的是:
我想调用类B
中类C
的一些函数我知道我可以通过在
类B
中创建这样的$c=new c()对象来实现这一点代码>
但是我还想传递B
的所有变量,即(something1,something2…)
由程序传递到C类
我知道我可以这样做:
$b = new B();
$b->something1 = "XYZ";
$b->something2 = "ABC";
...... long list.....
$c->something1 = $this->something1;
$c->something2 = $this->something2 .....
class A {
public static $foo;
}
class B extends A {}
class C extends A {}
# usage:
B::$foo = 'bar';
echo C::$foo; // will output 'bar'
但是,如果没有上述代码,是否可以这样做,因为
$c->somethingN
会占用太多的行,我不喜欢重复的代码
我只是想知道还有没有别的办法
我知道我可以通过在类B中创建一个对象来做到这一点,比如$c=newC()
如果这是实例成员(不是静态的),那么这就是方法
另一种方法是使用静态成员,如下所示:
$b = new B();
$b->something1 = "XYZ";
$b->something2 = "ABC";
...... long list.....
$c->something1 = $this->something1;
$c->something2 = $this->something2 .....
class A {
public static $foo;
}
class B extends A {}
class C extends A {}
# usage:
B::$foo = 'bar';
echo C::$foo; // will output 'bar'
为什么不使用值数组而不是单个成员?然后可以将所有变量作为一个变量处理。或者,为这些值创建一个额外的“容器”类,以便您可以更轻松地处理和传递它们。事实上,你在类B中设置的值在类C中已经可用,因为你在类A中声明它们是公共的,这是由类B和C共同驱动的。容器类的概念看起来很有趣,你能举个例子吗?只是一个类“存储”或类似被动容器的东西。在一个类中创建一个实例,并将其作为对该实例的引用传递给其他对象。就这些。你为什么不从C继承B呢?谢谢你的回答,我不能让它是静态的,因为这将在代码中产生巨大的变化。我将带着我的旧想法去。有几种方法可以实现你想要的。但是继承将不适合(如果不是静态成员)。需要查看您的申请表才能提供建议。