Я просто смотрел на исходный код CodeIgniter и наткнулся на пару вещей, которые, похоже, не могу понять; Я не уверен, что они имеют в виду, и, поскольку они в основном похожи на один или два символа, их сложно найти в Google и StackOverflow.
Одна вещь, с которой я довольно часто сталкивался, это:
$this->config =& get_config();
Я никогда раньше не сталкивался с =&
(или главным образом &
) в PHP. Что это значит точно? Они присваивают экземпляр от get_config
до $this->config
? Я предполагаю, что $this->config
взято из объявления вверху файла, где написано var $config = array();
Я искал функцию get_config()
и нашел следующую строку:
function &get_config($replace = array())
Здесь мой вопрос почти такой же: что означает &
и для чего он нужен? Я вижу эти две вещи (&
и =&
) во всех файлах ядра CI.
Что-то еще, что меня интересует, это их стиль комментирования. Каждая функция начинается с блока комментария, вот пример:
/**
* Set HTTP Status Header
*
* @access public
* @param int the status code
* @param string
* @return void
*/
Это генерируется каким-нибудь плагином или библиотекой? Похоже, много хлопот сделать это вручную. Я не проверял такие вещи, как PHPDoc, но может ли это быть что-то похожее (или PHPDoc)? Кажется полезным, если он генерирует это автоматически? Heehee.
К следующему вопросу. Я вижу различные функции с префиксом подчеркивания. Есть очевидное __construct
, но есть также такие функции, как _set_default_controller();
и _set_routing();
. У этих подчеркиваний есть какое-то особое значение? Я знаю, что двойное подчеркивание используется для чего-то, называемого «магическими методами» (я думаю о __get
и __set
, так как это те, которые я использовал сам). Есть ли у них «особый» технический смысл или это чисто семантика? Просвети меня, если возможно.
И последнее, но не менее важное: в файле ядра контроллера я видел это:
class CI_Controller {
private static $instance;
public function __construct()
{
self::$instance =& $this;
// goes on
Интересующая линия здесь self::$instance =& $this;
Что это значит? Устанавливает ли он $this
в свой экземпляр (wiiiiiild предположения, хаха), чтобы мы могли использовать $ this? Или это не имеет смысла? На самом деле это не так, поскольку в самом простом шаблоне MVC, который я использую для базовых веб-сайтов, я использую $ this без каких-либо дополнительных возможностей.
Может ли кто-нибудь предложить некоторое понимание здесь? Я был бы благодарен. Заранее большое спасибо.