Проблема: Когда я загружаю модель с объектом load
, она НЕ вернет вторую модель.OOP PHP load не возвращает правильный объект
Посмотрите на класс Test
, где я загружаю модель с объектом load
. Код $this->two
вернет объект One (должен загрузить объект Two).
Вопрос: Как решить эту проблему? Я открыть ваши предложения/идеи/код
Текущий результат:
one is working
object(One)#3 (1) { ["error":"Model":private]=> NULL }
one is working
object(One)#4 (1) { ["error":"Model":private]=> NULL }
Правильный результат:
one is working
object(One)#3 (1) { ["error":"Model":private]=> NULL }
two is working
object(Two)#4 (1) { ["error":"Model":private]=> NULL }
PHP:
one_model.php
<?php
class One extends Model {
public function test() {
echo '<p>one is working</p>';
}
}
two_model.php
<?php
class Two extends Model {
public function test() {
echo '<p>two is working</p>';
}
}
index.php
<?php
class Controller {
public $load;
public function __construct() {
$this->load = new Load();
}
}
class Load {
public function model($name) {
if (!class_exists($name)) {
require(strtolower($name) . '_model.php');
}
$model = new $name;
return $model;
}
}
class Model extends PDO {
private $error;
public function __construct() {
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
try {
$dsn = "mysql:dbname=test;host=localhost;charset=utf8";
parent::__construct($dsn, 'root', '', $options);
}
catch (PDOException $e) {
$this->error = $e->getMessage();
}
}
}
class Test extends Controller {
public $one;
public $two;
public function __construct() {
parent::__construct();
$this->one = $this->load->model('one');
$this->two = $this->load->model('two');
}
public function testing() {
$this->one->test();
var_dump($this->one);
$this->two->test();
var_dump($this->two);
}
}
// Usage
$test = new Test();
$test->testing();
Вы уверены, что вторая модель сохраняется правильно? Тестирование кода на моем тестовом сервере, это дает мне правильный результат. – Atli
Игнорируйте это. Я удалил код PDO, потому что это не показалось актуальным для теста, но добавление его, похоже, вызывает проблему. По крайней мере, это хорошая подсказка, где проблема: – Atli
Да, я заметил, что расширение PDO вызывает эту проблему. Но мне нужно, чтобы он расширялся для модели. –