创建新的php实例或将其作为参数传递
我需要这两种情况的最佳方法: 我有以下课程:创建新的php实例或将其作为参数传递,php,oop,instance,Php,Oop,Instance,我需要这两种情况的最佳方法: 我有以下课程: class classA{ function func1() { echo "HELLO1 "; } function func2() { echo "HELLO2 "; } } class classB{ function func1() { obj_a = new classA(); obj_a->func1(); $this-&g
class classA{
function func1() {
echo "HELLO1 ";
}
function func2() {
echo "HELLO2 ";
}
}
class classB{
function func1() {
obj_a = new classA();
obj_a->func1();
$this->fun2($obj_a); // pass instance as parameter - scenario1
//OR
$this->func3(); // do not pass instance as parameter - scenario2
}
function func2($obj_a) {
$this->fun2($obj_a);
}
function func3() {
$obj_a = new classA();
$this->fun2($obj_a);
}
}
$b = new classB();
$b->func1(); // HELLO1 HELLO2
使用哪一种最佳实践:
什么是最好的取决于你需要做什么。这是另一个有用的场景
class classC{
protected $classA
public function __construction(classA $classA) {
$this->classA = $classA;
}
public function func2() {
$this->classA->fun2();
}
}
$classA = new classA();
$classC = new classC($classA);
如果类A方法基于实例的属性,则所有这些都取决于是否要传递实例(因此也取决于属性值),或者是否需要新初始化的对象 若类A方法不基于实例的状态,则您的方法应该是静态的,并且您不必在任何时候实例化类A:
class classA {
public static function func1() {
echo "HELLO1 ";
}
public static function func2() {
echo "HELLO2 ";
}
}
class classB {
function func1() {
$this->fun();
}
function fun() {
ClassA::func1();
}
}