Но столкнулся с одной задачкой.
Создавать функции научился, классы тоже и функции в классах - другими словами постепенно иду в перед.
Наверное ОЧЕНЬ ламеский вопрос хочу задать к гуру.
Как создать
function # нужное название () { /* код */}
Что-бы было понятно суть вопроса:
Есть база данных.
Она выводит id
1
2
3
$query = "SELECT * FROM nav";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
while ($row = mysql_fetch_array($result)) {
$id_name=$row['name'];
$id_n=$row['id'];
}
необходимо чтобы результат mysql генерировал - function $id_n () { /* код */}
Если очень ТУПО выглядеть должно так (или хоть как-то).
$query = "SELECT * FROM nav";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
while ($row = mysql_fetch_array($result)) {
$id_name=$row['name'];
$id_n=$row['id'];
function $id_n () { /* код */}
}
Я так понял для этого нужно создать класс. А как и что дальше делать я понятия не имею.
Нашел 1 пример конструктора, а он как на зло и не пашет.
Спустя 10 минут, 44 секунды (12.09.2011 - 15:25) inpost написал(а):
Valerius
А зачем тебе весь этот геморой? Функция с одним названием, обработка уже будет зависеть от входящих данных. Зачем прям имена генерировать рандомно? Какой от этого толк?
А зачем тебе весь этот геморой? Функция с одним названием, обработка уже будет зависеть от входящих данных. Зачем прям имена генерировать рандомно? Какой от этого толк?
Спустя 2 минуты, 49 секунд (12.09.2011 - 15:28) linker написал(а):
А зачем именно так?
Спустя 4 минуты, 29 секунд (12.09.2011 - 15:33) sharki написал(а):
Это плохая практика, а так для ознакомления, генеришь строку вида :
Главное чтобы функция НЕ НАЧИНАЛАСЬ С ЦИФР
$id_n = 'fn_234234';
$newFn = 'function '.$id_n.'($bla){ return $bla; }';
eval($newFn);
echo $id_n("Значения\опционально");
Главное чтобы функция НЕ НАЧИНАЛАСЬ С ЦИФР
Спустя 7 минут, 22 секунды (12.09.2011 - 15:40) Valerius написал(а):
Базово грубо говоря.
Делается switch в нем эта-же база создает параметры для нужной функции и нужно генерировать саму функцию отдельно с приравненным параметром.
switch ($id) {
//*********************************************************************
case 'p00': // страница 1
$content = fPage0();
break;
case 'p01': // страница 1
$content = fPage1();
break;
case 'p02': // страница 2
$content = fPage2();
break;
case 'p03': // страница 3
$content = fPage3();
break;
//*********************************************************************
default: // главная страница
$content = fPage0();
}
// получаем всю страницу
$skin = fGlobal($content);
// выводим страницу
function fPage0(){
return <<<EOF
<p>Главная
EOF;
}
function fPage1(){
return <<<EOF
<p>Страница 1
EOF;
}
function fPage2(){
return <<<EOF
<p>Страница 2
EOF;
}
function fPage3(){
return <<<EOF
<p>Страница 3
EOF;
}
echo $skin;
Делается switch в нем эта-же база создает параметры для нужной функции и нужно генерировать саму функцию отдельно с приравненным параметром.
switch ($id) {
//*********************************************************************
case 'p00': // страница 1
$content = fPage0();
break;
case 'p01': // страница 1
$content = fPage1();
break;
case 'p02': // страница 2
$content = fPage2();
break;
case 'p03': // страница 3
$content = fPage3();
break;
//*********************************************************************
default: // главная страница
$content = fPage0();
}
// получаем всю страницу
$skin = fGlobal($content);
// выводим страницу
function fPage0(){
return <<<EOF
<p>Главная
EOF;
}
function fPage1(){
return <<<EOF
<p>Страница 1
EOF;
}
function fPage2(){
return <<<EOF
<p>Страница 2
EOF;
}
function fPage3(){
return <<<EOF
<p>Страница 3
EOF;
}
echo $skin;
Спустя 2 минуты, 41 секунда (12.09.2011 - 15:43) linker написал(а):
function fPage($id)
{
return 'Страница ' . $id;
}
Спустя 1 час, 20 минут, 52 секунды (12.09.2011 - 17:03) m4a1fox написал(а):
Тут глубже идея ИМХО! Создать функцию, кот. будет создавать другие функции!

Спустя 17 минут, 5 секунд (12.09.2011 - 17:21) Valerius написал(а):
Да
Спустя 12 минут, 31 секунда (12.09.2011 - 17:33) m4a1fox написал(а):
Valerius
Цитата |
Да |
От! А теперь по секрету. Зачем?
Спустя 1 минута, 13 секунд (12.09.2011 - 17:34) sharki написал(а):
Valerius
Я же тебе показал как надо делать, это единственный способ
Я же тебе показал как надо делать, это единственный способ
Спустя 6 минут, 10 секунд (12.09.2011 - 17:40) Valerius написал(а):
Цитата (m4a1fox @ 12.09.2011 - 14:33) | ||
Valerius
От! А теперь по секрету. Зачем? |
А я понятьия не имею что будет происходить когда пользователь загрузит страницу или вызовет какой-либо цикл.
Вот оно и должно будет думать загрузить шаблон или запустить тот или иной скрипт.
Спустя 44 секунды (12.09.2011 - 17:41) Valerius написал(а):
Цитата (sharki @ 12.09.2011 - 14:34) |
Valerius Я же тебе показал как надо делать, это единственный способ |
Спасибо
Спустя 40 секунд (12.09.2011 - 17:42) m4a1fox написал(а):
Valerius
Цитата |
Вот оно и должно будет думать загрузить шаблон или запустить тот или иной скрипт. |

Спустя 3 часа, 56 минут, 36 секунд (12.09.2011 - 21:38) vital написал(а):
Цитата (Valerius @ 12.09.2011 - 14:41) | ||
Спасибо |
Нет.
eval штука не хорошая.
Не вижу проблемы юзать что-то такое..
ниже кусок роутера, из моего проекта.
else if (strpos($_GET['action'], '/') !== false)
{
$route = explode('/', $_GET['action']);
$name = $route[0] . 'controller';
if (!class_exists($name, true))
throw new Exception('Controller ' . $name . ' does not exists!');
$controller = new $name(); //обращаем внимание на это
if (method_exists($controller, $route[1]))
{
$controller->$route[1](); //и на это.
} else
Теперь в случае автора, не вижу проблемы, что бы сделать как-то так
$imya_funccii_iz_bazy_dannyh='page_1'; //Дергаем бд, получаем название функции
$$imya_funccii_iz_bazy_dannyh(); //и вот так вызываем.
Но, автору темы, вместо таких дебрей лучше на самом деле почитать про MVC. На хабре есть примеры реализации.
Спустя 5 минут, 30 секунд (12.09.2011 - 21:44) vital написал(а):
А еще есть хорошая функция create_function()
про которую полезно почитать тоже.(да и вообще, про анонимные функции)
про которую полезно почитать тоже.(да и вообще, про анонимные функции)
Спустя 3 дня, 10 часов, 43 минуты, 20 секунд (16.09.2011 - 08:27) linker написал(а):
Valerius
Пользователь всёравно чтобы он не вводил не сможет сделать более того, что ты там напрограммил. Поэтому смыла в таком говнокодинге не вижу.
Пользователь всёравно чтобы он не вводил не сможет сделать более того, что ты там напрограммил. Поэтому смыла в таком говнокодинге не вижу.