
PHPでMVCの勉強をしており、以下に示すようなコードがあります。
AppクラスでRequestクラスとControllerクラスのインスタンスを作成し、call()で別のインスタンスから、他のインスタンスの関数を使いたい(今回はContollerからRequest)ときに
2つの方法を考えています。
方法①
・Appクラス内で自身の静的クラス$appを作って他のインスタンスを使いたいときはこの$appから参照する
方法②
・他のインスタンスを引数として渡す方法
このふたつの方法は以下のメリットがあると思っているのですが、他にメリットやデメリットはありますでしょうか?
もしくは使い分ける場面はありますでしょうか?
方法①のメリット
・いちいち引数を渡さなくてもよい
方法②のメリット
・用途の範囲を限定することができる
よろしくお願い致します。
PHP
1<?php 2// Your code here! 3class App 4{ 5 public static $app; 6 public Request $request; 7 public Controller $controller; 8 9 public function __construct() 10 { 11 self::$app = $this; 12 $this->request = new Request(); 13 $this->controller = new Controller(); 14 } 15 16 public function call() 17 { 18 $this->controller->call_hello1(); //①の場合 19 $this->controller->call_hello2($this->request); //②の場合 20 } 21} 22 23class Request 24{ 25 public function hello() 26 { 27 echo "hello"; 28 } 29} 30 31class Controller 32{ 33 public function call_hello1() //①の場合 34 { 35 App::$app->request->hello(); 36 } 37 public function call_hello2(Request $request) //②の場合 38 { 39 $request->hello(); 40 } 41 42} 43 44$app = new App(); 45$app->call();

