2014-01-28 2 views
1

мне нужен лучший способ для этих двух сценариев:Создать новый экземпляр PHP или передать его в качестве параметра

У меня есть эти классы:

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 

который один лучшая практика использования:

  1. $ this-> fun2 ($ obj_a); // передать экземпляр как параметр - сценарий1
  2. $ this-> func3(); // не передавать экземпляр как параметр - сценарий2

ответ

0

Что лучше всего зависит от того, что вам нужно сделать. Вот еще один полезный scenerio.

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); 
0

Если методы класса А основаны на свойствах, например, все зависит от того, погоды вы хотите передать экземпляр (и, следовательно, значение свойств), или если вы хотите свеж инициализирована объекта.

метод

Если класс А не основаны на состоянии, например, ваш метод должен быть статическим, и вы не должны создать экземпляр класса 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(); 
    } 
} 
Смежные вопросы