|
|
автор: Швейк (02.03.2005 в 09:51) |
|
|
для: Atom
(01.03.2005 в 22:02)
| | Не совсем здесь с Вами согласен. Дело в том, в форуме я привел упрощенный вариант совей проблемы - специально, что бы не разводить флуд и грузить Вас зря. В "реальном" моем проекте все гораздо сложнее закручено. И проблема как раз была в том, что я намутил там такого, что черт ногу сломит, но все как раз работало. Принцип построения был не правильный, но давал корректный результат. Именно поэтому я и обратился сюда с "облегченной" версией вопроса. У меня была цель - разобрать сам принцип. И, похоже, я его разобрал.
С уважением,
Бравый Солдат. | |
|
|
|
|
|
|
|
для: Швейк
(01.03.2005 в 20:31)
| | Попробуйте просто поэксперементировать, намного легче все понять ;) | |
|
|
|
|
автор: Швейк (01.03.2005 в 20:31) |
|
|
для: Valeri
(01.03.2005 в 16:59)
| | Ребята, кажется дошло (Как до жирафа:) ).
Принцип функции include я в целом понимал и до этого, просто намутил у себя с глобальными переменными (и что удивительно - работало).
Итак, если я Вас правильно понял в библиотеке функций lib.php пишется вот такой код:
<?
// файл lib.php
function summ($a, $b){
$result=$a+$b;
return $result;
}
?>
|
Т.е. просто создается функция summ, зависящая от значений двух переменных - $a и $b. Данная функция возвращает значение переменной $result. Пока правильно?
Второй файл - data.php содержит следующий код:
<?
include "lib.php";
$a=2;
$b=3;
print summ($a, $b);
?>
|
В этом файле упоминается ссылка на библиотеку функций, что бы знать откуда брать функцию summ.
После того, как мы присваиваем значения переменным b]$a [/b]и $b строкой
происходит подстановка этой функции (в нашем случае просто строки
в файл data.php). И никаких глобальных переменных не надо. Правильно?
С уважением,
Бравый Солдат. | |
|
|
|
|
|
|
|
для: Axxil
(01.03.2005 в 15:25)
| | мне кажется человеку надо обьянить попроще, попробую это сделать.
можно использовать 2 файла как у вас, а можно и один, вот его вид
<?
// файл data.php
function summ($result) {
$result=$a+$b;
return $result;
}
$a=2;
$b=3;
print summ($result);
?>
|
тоесть при использование 2 файлов, как у вас, при обработке на сервере получается один файл вот такого вида (см.выше)
обычно функция include (); используется тогда когда одну и туже функцию в каком то файле используют в нескольких местах или в нескольких файлах. Для того что-бы каждый раз не писать одно и тоже применяется include ();
Можно привести такой пример, у вас есть шапка сайта, которая используется во всех файлах, что бы ее не писать везде, вы создаете файл schapka.php и инклудите во все файлы где она применяется.
И глобальная переменная тут вообще-то не при чем.
Мда уж, не знаю получилось ли обьяснение проще или еще больше запутал человека :( | |
|
|
|
|
|
|
|
для: Швейк
(01.03.2005 в 15:02)
| | >Неясность первая
Так вы же вызываете функцию summ в файле data.php!!!
<?
include 'lib.php';
$a=10;
$b=5;
print summ($a,$b);
?>
|
Соответственно где непонятки?
>второй - допустим, у меня есть еще один файл, например, 123.php, абсолютно не >связанный с двумя предыдущими, но там тоже есть переменная $a=10. Откуда >тогда будет браться значение этой перемнной для библиотеки функций?
опять же вызов функции summ происходит в файле 123.php
это всё идентично тому что как-будто и не было никогда lib.php и вы каждый раз вновь пишете функцию summ в каждом создаваемом файле. | |
|
|
|
|
автор: Швейк (01.03.2005 в 15:17) |
|
|
для: Atom
(01.03.2005 в 15:15)
| | Atom, очень извиняюсь, но я не понял письма...
С уважением,
Бравый Солдат. | |
|
|
|
|
|
|
|
для: Швейк
(01.03.2005 в 15:02)
| | Нужно вставить файл со значениями переменных в исполняемый скрипт
include "a.php";
И тогда пхп поймет, откуда брать переменные. | |
|
|
|
|
автор: Швейк (01.03.2005 в 15:02) |
|
|
для: Axxil
(01.03.2005 в 14:21)
| | Пока не совсем ясно.
Неясность первая
Вы сказали, что
Нужно либо передавать $a и $b в качестве параметров функции summ
Тогда получается, что так?
<?
//файл библиотеки функций lib.php
function summ($a, $b) {
$result=$a+$b;
return $result;
}
?>
|
Соответсвенно, вопрос:
а как PHP поймет, что значение переменных $a и $b надо брать из файла data.php?
Непонятка вторая
Вы писали
либо объявлять эти переменные глобальными
<?
function summ(){
global $a,$b;
....
}
?>
|
В этом случае целых два вопроса:
первый - идентичен предыдущему. Не понимаю, как PHP догадается, откуда брать значения переменных...
второй - допустим, у меня есть еще один файл, например, 123.php, абсолютно не связанный с двумя предыдущими, но там тоже есть переменная $a=10. Откуда тогда будет браться значение этой перемнной для библиотеки функций?
Надеюсь, я все нормально объяснил. Не могу устаканить кое-какие нюансы, вот и занимаюсь свистопляской.
Заранее блаодарю.
С уважением,
Бравый Солдат. | |
|
|
|
|
|
|
|
для: Швейк
(01.03.2005 в 10:06)
| | include это просто подстановка кода из файла lib.php в файл data.php.
указаный код не будет работать.
Нужно либо передавать $a и $b в качестве параметров функции summ
<?
function summ($a,$b){
...
}
?>
|
либо объявлять эти переменные глобальными
<?
function summ(){
global $a,$b;
....
}
?>
|
а result это значение возвращаемое функцией.
И в качестве параметра его писать не надо
<?
//файл библиотеки функций lib.php
function summ() {
$result=$a+$b;
return $result;
}
?>
|
http://softtime.ru/bookphp/gl5_2.php | |
|
|
|
|
автор: Швейк (01.03.2005 в 10:06) |
|
| Добрый день!
Когда осваиваешь предмет сам, часто пропускаются ключевые "винтики", в результате чего некоторая часть идет наперекосяк.
Вот и у меня похожая ситуация.
Задача
Есть два файла. Первый файл содержит значения переменных, которые используются во втором файле. Второй файл является библиотекой функций.
Пример первого файла:
<?
// файл data.php
include lib.php;
$a=2;
$b=3;
print summ($result);
?>
|
Думаю, с этим кодом вопросов не будет - устанавливаем значения двух переменных и вызываем функцию summ из библиотеки функций lib.php
Код вторго файла тоже простой:
<?
//файл библиотеки функций lib.php
function summ($result) {
$result=$a+$b;
return $result;
}
?>
|
А вот теперь - вопрос
Каким образом функция во воторм файле будет знать, что значения переменных $a и $b необходимо брать из файла data.php?
Здесь каким-то образом замешена глобальная переменая, но не совсем понимаю её суть и нужна ли она здесь вообще.
Вот такой вопрос.
Заранее благодарю.
С уважением,
Бравый Солдат. | |
|
|
|
|