[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: функция include
Pinoplast
Возможноли функции include ('reuting') присвоить переменую в коде, чтоб дальше по коду ее выводить когда нада, если да то как это можно записать, голову слома уже но так чето не хочет работать


PHP
<?

$bob=include ('reuting') ;

/
или так писал

$bob
="<? include ('reuting') ?> ";




Спустя 2 минуты, 2 секунды (29.09.2009 - 20:32) glock18 написал(а):
да

из файла можно возвращать значение так же, как из функций.

Спустя 6 минут, 6 секунд (29.09.2009 - 20:38) sergeiss написал(а):
А можно сделать по-другому smile.gif

PHP
// reuting.php
$a=123;


PHP
// основной скрипт
include( 'reuting.php);
echo 
$a// эта переменная уже будет определена, как и все другие переменные, созданные в reuting.php


Спустя 48 секунд (29.09.2009 - 20:39) Pinoplast написал(а):
немного уточну свою проблему, суть в том что include ('reuting') выводит картинку а точнее текст по по дсчетам, вида типа такого img/111.gif, но врезультате этот вывод подставляеться в цыкл do while когда я так делаю она выводит ошыбку, получаеться что в цыкл попадает не код пхп а html, а точнее текст img/111.gif, я вот не как не допру как его вывести в цыкл через echo чтоб не давало ошыбку, вот почему я спросил или както можно присвоить переменую

Спустя 4 минуты (29.09.2009 - 20:43) Pinoplast написал(а):
Вот часть код из include ('reuting')


PHP
$procetntovka=($kolad*$procent)/$argo

$add1
="<img src='img/111.gif'>";
$add1="<img src='img/112.gif'>";
$add1="<img src='img/113.gif'>";
$add1="<img src='img/114.gif'>";
$add1="<img src='img/115.gif'>";

if ($procetntovka>=&& $procetntovka<=20) 
{ echo $add1;}
if ($procetntovka>20 && $procetntovka<=40) 
{ echo $add1;}
if ($procetntovka>40 && $procetntovka<=60) 
{ echo $add1;}
if ($procetntovka>60 && $procetntovka<=80) 
{ echo $add1;}
if ($procetntovka>80 && $procetntovka<=100)
{
 echo $add1;}


а вот куда попадает инклуд
PHP
do     
{
........
echo "<? include ('reuting') ?>";
.........
}
while ($myrow22=mysql_fetch_array($result2));

Спустя 9 минут, 40 секунд (29.09.2009 - 20:52) twin написал(а):
так низя. include это не функция, а языковая конструкция. Она ничего не возвращает. Тебе буфферизацию надыть сделать.

Спустя 55 секунд (29.09.2009 - 20:53) Pinoplast написал(а):
Что такое буферизация?

Спустя 7 минут, 47 секунд (29.09.2009 - 21:01) twin написал(а):
а вот куда НЕ ДОЛЖЕН попадаетЬ инклуд
PHP
do     
{
........
echo 
"<? include ('reuting') ?>";
.........
}
while (
$myrow22=mysql_fetch_array($result2));

потому что опять поповские происки с do... while
А буфферизация это вот:
PHP
while ($myrow22=mysql_fetch_array($result2))  
{
........
   
ob_start();
    include (
'reuting');
   
$buff ob_get_contents();
   
ob_end_clean();
   echo 
$buff;
.........
}
только это плохая идея.

Спустя 6 минут, 28 секунд (29.09.2009 - 21:07) glock18 написал(а):
Цитата
так низя. include это не функция, а языковая конструкция. Она ничего не возвращает. Тебе буфферизацию надыть сделать.

неправда, Твин smile.gif

some.php
PHP
return 'I am return value of an entire php file';


some2.php
PHP
$some = include('some.php');
  echo 
$some;


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

Спустя 1 минута, 27 секунд (29.09.2009 - 21:09) Pinoplast написал(а):
А так переменую можно присваивать?
PHP
$add1="<img src='img/111.gif'>";

Спустя 5 минут, 38 секунд (29.09.2009 - 21:15) twin написал(а):
Цитата
неправда, Твин

Цитата
А так переменую можно присваивать?

А?

Спустя 5 минут, 49 секунд (29.09.2009 - 21:20) Pinoplast написал(а):
У меня ошибка пишет на эту запись

Parse error: syntax error, unexpected T_VARIABLE in /home/djurn/public_html/reuting.php on line 25

Спустя 12 минут, 43 секунды (29.09.2009 - 21:33) Pinoplast написал(а):
Нашол свою ошыбку, олень я полный, ну прочитай ошыбку и все станет понятно, пропустил точку с запятой после $argo;

PHP
$procetntovka=($kolad*$procent)/$argo;



if (
$procetntovka>=&& $procetntovka<=20) {  echo "<img src='img/111.gif'>";}
if (
$procetntovka>20 && $procetntovka<=40) {  echo "<img src='img/112.gif'>";}
if (
$procetntovka>40 && $procetntovka<=60) {  echo "<img src='img/113.gif'>";}
if (
$procetntovka>60 && $procetntovka<=80) {  echo "<img src='img/114.gif'>";}
if (
$procetntovka>80 && $procetntovka<=100){  echo "<img src='img/115.gif'>";}


а вывел просто

PHP
do     
{
........
 include (
'reuting');
.........
}
while (
$myrow22=mysql_fetch_array($result2))

Спустя 2 минуты, 42 секунды (29.09.2009 - 21:36) glock18 написал(а):
twin
хорошо, я умываю руки. я думал, что человек понимает чего просит, говоря
Цитата
Возможноли функции include ('reuting') присвоить переменую в коде


Спустя 5 минут, 45 секунд (29.09.2009 - 21:42) twin написал(а):
Дело в том, что такая конструкция:
PHP
$some = include('some.php');
  echo 
$some;

с ретурном не имеет никакого смысла. Она ничем не отличается от предложенного sergeiss'ом варианта, только избыточна.
Ретурн в инклюдах применяется для досрочного выхода из файла, а выводить одну (а больше нельзя) переменную так замудренно, когда её и так видно...

Спустя 7 минут, 57 секунд (29.09.2009 - 21:49) glock18 написал(а):
echo только для демострации. возвращаться может любая переменная - объект, массив или что угодно.

и это очень облегчает жизнь в ряде случаев. т.к. определение структурированного конфига, например.

Спустя 6 минут, 25 секунд (29.09.2009 - 21:56) twin написал(а):
Поподробнее плиз. А то я чувствую что чего то упустил...
В чем приемущество такой конструкции
inc.php
PHP
$a 'test';
return 
$a;

index.php
PHP
$a = include 'inc.php';

перед такой:
inc.php
PHP
$a 'test';

index.php
PHP
include 'inc.php';

Ведь что так что так переменная будет видна. Хоть там объект, хоть массив, хоть лысый черт...
Я почему то не встречался с таким...

Спустя 35 минут, 15 секунд (29.09.2009 - 22:31) glock18 написал(а):
twin
плюс, ну положем плюс такой же, как в использовании локальных переменных перед глобальными.

вот пример:
config.php
PHP
return array(
        
'roles' => array(
            
'guest' => 1,
            
'admin' => 2,
            
'user' => 3,
        ),
        
'users' => array(
            
'email confirm' => true,
            
'auto login' => true,
            
'cookie expire time' => '24 days',
        ),
        
'db' => array(
            
'dsn' => 'mysql:host=127.0.0.1;dbname=guestbook',
            
'user' => 'root',
            
'pass' => '',
            
'encoding' => 'utf8',
            
'tables' => array(
                
'messages' => 'messages',
                
'users' => 'users',
            ),
            
'datetime format' => 'Y-m-d G:i:s',
        ),
        
'pages' => array(
            
'default page' => 'home'
        
),
        
'view' => array(
            
'layout cookie' => 'layout',
            
'default layout' => 'default',
        ),
    )


загружается вот так внутри класс Application:

PHP
public function LoadConfig($config null)
        {
            if (
$this->_config == null)
                
$this->_config = include('config' DIRECTORY_SEPARATOR . ($config $config 'config') . '.php');
            else
                throw new 
AppException('Config is already loaded'AppException::CODE_CONFIG_LOAD_IGNORE);
        }


смысл в том, что в случае, если мы определяем переменную внутри файла, а потом ее используем, то:
1. она закроет видимость существующей переменной, если такая есть.
2. при вызове файла в любом контексте значение будет ложиться в одну переменную.

здесь допустим я могу в config.php
вместе return поставить $this->_config = array()...

это завязало бы мне руки, если мне пришлось бы подключать файл config.php не из контекста класса Application, а из глобального пространства имен. Потому что в глобальном пространстве имен указатель $this не определен.

Если же оставить return, то я могу взять конфиг из любого места программы, и конфиг ляжет туда, куда мне надо.

Спустя 1 час, 4 минуты, 2 секунды (29.09.2009 - 23:35) twin написал(а):
Сеньк. Не люблю я ООП, по этому и не сталкивался. Оч интересно. smile.gif

Спустя 39 минут, 53 секунды (30.09.2009 - 00:15) sergeiss написал(а):
Господа, а позвольте вам не позволить спорить? wink.gif

Отвечаю на вопрос twin'а о том, какой смысл может быть у $a=include('abc.php');

Смысл очень простой, безо всяких ООП. Можно и нужно использовать. Вот представьте: в инклуженном файле есть какое-то логическое ветвление, всякие ИФы, СВИЧи... И вот в какой-то момент выполнения скрипта надо завершить работу этой инклуженной части, откуда-то из ее середины. Мы просто пишем return и код возврата, который обрабатываем в вызывающем скрипте. Чтобы он (вызывающий) знал, как завершилось выполнение инклуженного. То есть, как при вызове простой функции.

А уж забрать всякие так переменные, созданные внутри скрипта - это другой разговор.

Спустя 46 минут, 18 секунд (30.09.2009 - 01:01) twin написал(а):
А ты читать то умеешь? biggrin.gif Разговор как раз про то, что есть ли смысл что то выводить из файла ретурном. Я всю жизнь думал что ретурн в инклюдах только для досрочного выхода, а glock18 показал мне новое применение. За что я ему благодарен.
Так что позвольте мне не позволить вам непозволить нам сприть. biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.