2014-10-25 2 views
1

Как вы знаете, Codeigniter - отличная фреймворк PHP, я пытаюсь создать свою собственную фреймворк. Вот проблема. Мне очень нравится функциональность $data в Codeigniter, и я хочу, чтобы это произошло в моей среде. Вопрос в том, как это работает. Вот что он делает:Извлечь ключи массива и значения как переменные

  1. вы делаете массив как это:

    $data['title']= 'My Name'; 
    
  2. , то вы можете использовать эту переменную, как это в виду:

    $title ; 
    

Как Я могу сделать переменную как $data?

+0

Мне нравится, когда люди пытаются создать свой собственный материал !. Вы хотите использовать свою переменную данных только в представлениях, правильно? – boyd

+0

1) «$ data function» LOL 2) проверьте, как это делает CI. весь исходный код есть ... –

+0

Это не просто для просмотра ... в кодеигниторе вы используете $ data ['title'] = 'My name'; а затем в строке гнезда вы используете его так: echo $ title; и это меня смутило. – user3492977

ответ

4

Что вы ищете, это превратить ключи массива в переменные. Для этого есть одна встроенная функция.

extract() - Импорт переменных в текущую таблицу символов из массива

$data['x'] = "Value"; 
extract($data, EXTR_PREFIX_SAME, null); 
echo $x; 

Пройдите документы и исследовать, как вы хотите его использовать.

+0

Я знаю этого моего друга ... Проблема здесь .... Как сделать переменную $ data делать все эти вещи сами ... без вызова какой-либо функции непосредственно от нас, потому что это то, что CI (codeigniter) сделал это. – user3492977

+1

@ user3492977 CI делает это за вас. Пройдите через 'system \ core'Loader.php' и посмотрите в' _ci_load' функцию. Вы увидите, что они использовали 'extract'. Когда вы пишете фреймворк, вам нужен механизм для загрузки представлений. При этом вы можете использовать эту функцию так, как они сделали, или лучше найти другой способ загрузки представлений. Приветствия :) – SachinGutte

0

Ваш вопрос немного расплывчатый, а также не записывайте свои собственные рамки, если вы боретесь с этим вопросом.

Но я думаю, что вы спрашиваете, как CI получить доступ к переменным в $ data (без $ data ['var_name'];)?

Так что, если вы передаете:

$data = array("title" => "a page title"); 

по вашему мнению, вы можете просто. Это ваш вопрос - как это сделать?

это просто.

function view($data=array(),$file="your-view-file.php") { 
extract($data); 
include($file); 
} 

потому что экстракт находится в том же объеме, что и include().

Честно, хотя, просто пройти через файлы CI и работать этот материал ...

Смежные вопросы