オブジェクト指向、MVCについて勉強中です。
ソースに難があるため、便宜的にDB接続をする体で説明させていただきます。
例えばDBに接続するためのクラスを作り、ユーザー名とパスワードを引数として受け取りconstruct
で処理します。
lang
1namespace app\Model; 2 3class Db { 4 protected $db; 5 public function __construct($db_user, $db_pass) { 6 try { 7 $this->db = new \PDO(PDO_DSN, $db_user, $db_pass); 8 } catch (\PDOException $e) { 9 echo $e->getMessage(); 10 exit; 11 } 12 } 13}
次にDBクラスを継承した、小クラスを作成。
lang
1namespace app\Model\Db; 2 3class Serch extends \app\Model\Db { 4 public function hoge_serch() { 5 $sql = "select * from table"; 6 $stmt = $this->db->prepare($sql); 7 $stmt->execute(); 8 } 9}
最後にこれを実行する処理ですが、ここでどのように考えて良いのかわからず、躓いています。
下記のソースを実行すると、引数が指定されてないよ、というエラーが出力されます。
__Warning: Missing argument 1 for app\Model\Db::__construct()
lang
1$db_user = hoge_user; 2$db_pass = hoge_pass; 3 4$hoge = new app\Model\Db\Serch; 5$hoge->hoge_serch($db_user, $db_pass);
instanceDB = new app\Model\DB($db_user, $db_pass)
とすればclassDBの$db
に指定した引数を元に実行した結果が格納されるのは、確認しているのですが、小クラスから実行した場合、どのような考え方をすれば良いのかわかりません。
もしくは、親クラスに引数を渡して処理を行なうような考え方はトリッキーな部類になりますでしょうか。
宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/18 00:20
2015/12/18 00:40