Объявление функции

DmitriyF

Guest
Объявление функции

Хочу вызывать функцию, которая определяется во включаемом файле:

a.php:
<?
echo f();
include "b.php";
?>

b.php:
<?
function f(){
return "test passed";
}
?>


Ничего не работает. Работает, естественно, если поменять местами строки в a.php:
<?
include "b.php";
echo f();
?>

Но мне нужно вызывать функции именно в таком порядке:
1) f()
2) include()

Как бороться? Можно ли в php сделать предварительное объявление функции как в си?
 

Demiurg

Guest
ты бы еще вот так сделал:
if( f() ) include "b.php";

вполне логично, что перед тем, как вызвать функцию её надо определить.
 

DmitriyF

Guest
Originally posted by Demiurg
ты бы еще вот так сделал:
if( f() ) include "b.php";

вполне логично, что перед тем, как вызвать функцию её надо определить.
Не логично. Ведь конструкция

echo f();

function f(){
return "a"
}

вполне работает.

Я не очень разбираюсь в пхп, поэтому мне казалось, что интерпретатор сначала проходит по тексту и разбирает все инклуды, а уже потом анализирует то, что получилось. Может быть, есть инструкция, указывающая интерпретатору делать именно так?
 

Demiurg

Guest
Инклуды совержаются во время работы скрипта.

-~{}~ 19.01.05 15:05:

> интерпретатор сначала проходит по тексту и разбирает все инклуды
что он будет делать, когда увидит
include $file;
?
 

Cougar

Кошак
Вместо include() используй require() (а лучше require_once() - на всякий случай).
 

DmitriyF

Guest
Originally posted by Demiurg

что он будет делать, когда увидит
include $file;
?
Откладывать этот инклуд на время выполнения, например.
В общем понятно, что идея не катит :( Большое спасибо всем за помощь!
 

Crazy

Developer
Re: Объявление функции

Автор оригинала: DmitriyF
Но мне нужно вызывать функции именно в таком порядке:
1) f()
2) include()
Перестань этого хотеть -- и все будет в порядке.
 

DmitriyF

Guest
Originally posted by Demiurg
Ты скажи, зачем тебе это ?
Да вот хотел сайт простенький сделать - файл с шаблоном страниц инклудит файл с контентом, при этом в файле с контентом еще определяются функции, вызываемые в шаблоне ПЕРЕД точкой инклуда: GetTitle(), например.
Ногами сильно не пинайте: CMS ставить нельзя, а пользователям должно быть просто добавлять новые страницы.
 

Demiurg

Guest
Что то я не понял смысл всего этого. У тебя есть исполняемый скрипт в начале которого инклудятся нужные файлы с функциями, а потом можешь вызывать их сколько угодно.
 

Фанат

oncle terrible
Команда форума
пользователи добавляют новые старницы с пхп кодом?
орррригинально.

а для того, чтобы получить такйт страницы, нужна целая функция. вообще тут даже не функция, тут целый скрипт понаобится.

CMS ставить нельзя
Базой данных, как я понимаю, на этом нищем хостинге тоже и не пахнет?
 

DmitriyF

Guest
Originally posted by Demiurg
Что то я не понял смысл всего этого. У тебя есть исполняемый скрипт в начале которого инклудятся нужные файлы с функциями, а потом можешь вызывать их сколько угодно.
Идея такая была:
Пользователь умеет делать html и немного разбирается в пхп. Я хотел сделать добавление страниц на сайт так: пользователь кладет файл с html-текстом в нужную папку, этот файл инклудится в то место главного файла, где должен находится контент. Однако иногда вместо стандартных, например, заголовков <title>Default title</title> надо писать специфический. Я хотел написать в главном файле
<title><? GetTitle() ?></title>,
а функцию GetTitle() при необходимости пользователь дописывает в инклуженном файле. Таким образом, всё описание отображаемой страницы хранится в одном файле, состоящем из основного текста (контента) и необязательного набора маленьких дополнительных функций, задающих заголовок страницы, специфические ключевые слова...
Понятно, что многие их этих функций вызываются до точки инклуда. Поэтому и был вопрос - можно ли заголовки функций вынести вперед в основной файл, а реализацию делать в файлах пользователя?

-~{}~ 20.01.05 14:01:

Originally posted by Фанат
пользователи добавляют новые старницы с пхп кодом?
орррригинально.

Базой данных, как я понимаю, на этом нищем хостинге тоже и не пахнет?
Да, в страницах может быть и простой пхп-код.
База данных MySQL, cms нельзя ставить потому что "ставить cms нельзя".
 

Фанат

oncle terrible
Команда форума
ну кто бы сомневался.
Да, сочетание безумного заказчика с начинающим программистом - это страшная сила.

Значит так.
Никакого пхп кода в добавляемых страницах
Всякие тайтлы -шмайтлы пишутся в теле страницы по заранее определенному формату.
Ты читаешь файл, бьешь его по заранее определенному формату на куски, и эти куски в нужных местах выводишь.

Если гражданин хочет добавлять именно скрипты, то пусть тогда сам и инклюдит дизайн в свой скрипт.
Только непонятно, зачем ты ему вообще понадобился. В таком случае.
 

DmitriyF

Guest
Originally posted by Фанат
ну кто бы сомневался.
Да, сочетание безумного заказчика с начинающим программистом - это страшная сила.

Значит так.
Никакого пхп кода в добавляемых страницах
Всякие тайтлы -шмайтлы пишутся в теле страницы по заранее определенному формату.
Ты читаешь файл, бьешь его по заранее определенному формату на куски, и эти куски в нужных местах выводишь.

Если гражданин хочет добавлять именно скрипты, то пусть тогда сам и инклюдит дизайн в свой скрипт.
Только непонятно, зачем ты ему вообще понадобился. В таком случае.
Точка зрения общественности понятна :) Спасибо за советы!
 
Сверху