Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Глобальная переменная.

Сообщения:  [1-10] 

 
 автор: Швейк   (02.03.2005 в 09:51)
 
   для: Atom   (01.03.2005 в 22:02)
 

Не совсем здесь с Вами согласен. Дело в том, в форуме я привел упрощенный вариант совей проблемы - специально, что бы не разводить флуд и грузить Вас зря. В "реальном" моем проекте все гораздо сложнее закручено. И проблема как раз была в том, что я намутил там такого, что черт ногу сломит, но все как раз работало. Принцип построения был не правильный, но давал корректный результат. Именно поэтому я и обратился сюда с "облегченной" версией вопроса. У меня была цель - разобрать сам принцип. И, похоже, я его разобрал.

С уважением,
Бравый Солдат.

   
 
 автор: 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 строкой

print summ($a, $b);

происходит подстановка этой функции (в нашем случае просто строки

$result=$a+$b;

в файл data.php). И никаких глобальных переменных не надо. Правильно?



С уважением,
Бравый Солдат.

   
 
 автор: Valeri   (01.03.2005 в 16:59)   письмо автору
 
   для: 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 и инклудите во все файлы где она применяется.
И глобальная переменная тут вообще-то не при чем.
Мда уж, не знаю получилось ли обьяснение проще или еще больше запутал человека :(

   
 
 автор: Axxil   (01.03.2005 в 15:25)   письмо автору
 
   для: Швейк   (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, очень извиняюсь, но я не понял письма...

С уважением,
Бравый Солдат.

   
 
 автор: Atom   (01.03.2005 в 15:15)   письмо автору
 
   для: Швейк   (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. Откуда тогда будет браться значение этой перемнной для библиотеки функций?


Надеюсь, я все нормально объяснил. Не могу устаканить кое-какие нюансы, вот и занимаюсь свистопляской.

Заранее блаодарю.
С уважением,
Бравый Солдат.

   
 
 автор: Axxil   (01.03.2005 в 14:21)   письмо автору
 
   для: Швейк   (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?
Здесь каким-то образом замешена глобальная переменая, но не совсем понимаю её суть и нужна ли она здесь вообще.

Вот такой вопрос.

Заранее благодарю.

С уважением,
Бравый Солдат.

   

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования