Реплицирующая функция загрузки Codeigniters - PullRequest
2 голосов
/ 18 марта 2011

Я недавно поиграл с Codeigniter, чтобы посмотреть, чему я могу научиться. Я наткнулся на функцию загрузки и мне было интересно, если кто-нибудь знает, как это делается. По сути, это выглядит примерно так:

$this->load->model('Model_name');
$this->Model_name->some_function();

Теперь load, очевидно, является классом, и экземпляр создается и называется load. И загрузка включает в себя класс «Model_name» и создает его экземпляр. Но часть, которую я не могу решить, как класс загрузки создает «переменную класса» с именем «Model_name», которая будет использоваться, как во второй строке кода? И как бы я на самом деле пойти о реализации этого в php.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 марта 2011

В основном класс делает запоминание всех созданных объектов (например, $ this), а затем присваивает вновь созданный класс по ссылке в качестве переменной в этих классах.

function Load($className)
{
  $newClass = new $className();
  foreach($this->objects as &$object) //objects is array with created objects
    $object->$className = $newClass;
}

однако, он делает намного больше вещей в фоновом режиме, чем это. Вы знаете, что вы можете просто открыть 'loader.php' и затем прочитать, что он делает, верно?

0 голосов
/ 18 марта 2011

Такие вещи работают с интерпретируемыми языками, такими как PHP.Хотя это может быть очень запутанным, особенно если вы знакомы со строгими языками, такими как C ++, C # и т. Д.

Идея в том, что есть функции PHP, которые могут выполнять код PHP, и результат будет видимымв другом месте в сценарии.

...