Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> return и include 
:(
    Опции темы
zibox86
Дата 20.5.2010, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 11.12.2007

Репутация: нет
Всего: 1



Всем привет!

Нужна помощь, есть класс:

Код

class Application extends Main {
    var $ApplicationName;
    var $ApplicationPath;
    
    var $ApplicationTemplateName;
    var $ApplicationTemplatePath;
    
    var $ApplicationProperty;
    
    var $ComponentMessages;
    
    public function Component($name, $property = false){
        
        $this->ApplicationName = trim($name);
        $this->ApplicationProperty = $property;
        
        if ($this->getApplicationInfo()){        
            $this->init($this->ApplicationProperty,$this->ComponentMessages);
        }
        else{
            return false;
        }
    }

    . . . . . . . . . . . . . . . . . . . . .

    private function init($property, $message){
        include_once $this->ApplicationPath;
    }
              
    . . . . . . . . . . . . . . . . . . . . .

    public function __IncludeTemplate(){
        return include ($this->ApplicationTemplatePath);
    }
}


Так вот, в init() инклудится тело компонента в конце выполнения которого вызывается __IncludeTemplate(). В которой подключается шаблон компонента.

Но шаблон не доступен из Init().

Какие компромиссы предложите?


Может не понятно описал - спрашивайте!

Это сообщение отредактировал(а) zibox86 - 20.5.2010, 19:11
PM MAIL WWW   Вверх
ksnk
Дата 20.5.2010, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(zibox86 @  20.5.2010,  19:10 Найти цитируемый пост)
Но шаблон не доступен из Init().

не догоняю что-то 
xxx.php
Код

<?php
echo 'one<br>';
include $this->__IncludeTemplate();
?>

xxx2.php
Код

<?php
echo 'two<br>';
?>

собственно файл
Код

class Application  {
     var $ApplicationPath='xxx.php';
     var $ApplicationTemplatePath='xxx2.php';
    

    function init($property='', $message=''){
        include_once $this->ApplicationPath;
    }
              
    function __IncludeTemplate(){
        include $this->ApplicationTemplatePath;
    }
};
echo 'before<br>';

$x=new Application();
$x->init();
$x->init();
$x->init();
echo ' after!';


выводится 
Код

before
one
two
after!

Вроде именно так, как доктор прописал...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
zibox86
Дата 20.5.2010, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 11.12.2007

Репутация: нет
Всего: 1



Для наглядности заменил include на содержание фалов

Код

class Application extends Main {
    var $ApplicationName;
    var $ApplicationPath;
    
    var $ApplicationTemplateName;
    var $ApplicationTemplatePath;
    
    var $ApplicationProperty;
    
    var $ComponentMessages;
    
    public function Component($name, $property = false){
        
        $this->ApplicationName = trim($name);
        $this->ApplicationProperty = $property;
        
        if ($this->getApplicationInfo()){        
            $this->init($this->ApplicationProperty,$this->ComponentMessages);
        }
        else{
            return false;
        }
    }

    . . . . . . . . . . . . . . . . . . . . .

    private function init($property, $message){

       defined("SECURITY") or Main::ShowError("Не санкционированный доступ");
       global $Mysql,$Security;

       if (!$property['TYPE_MENU']){
            parent::ShowError("Не указан тип меню");
            return false;
       }

       $Mysql->GetQuerySql("select * from `menu` where `type_menu`={$property['TYPE_MENU']} order by `sort`");

       if($Result = $Mysql->GetFetch()){
    
            $Result = CreateArrayMenu($Result);
            $this->__IncludeTemplate();
       }
    }
              
    . . . . . . . . . . . . . . . . . . . . .

    public function __IncludeTemplate(){
       <div class="menu">
        <?if($Result):?>
            <ul>
            <?foreach ($Result as $Menu):?>
             <li class="item">
                 <a href="<?=$Menu['link']?>"><?=$Menu['name']?></a>
                 <?if (is_array($Menu['parent'])):?>
                     <ul>
                         <?getParent($Menu['parent']);?>
                     </ul>
                 <?endif;?>
             </li>
            <?endforeach;?>
         </ul>
        <?endif;?>
      </div>
    }
}

PM MAIL WWW   Вверх
zibox86
Дата 21.5.2010, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 11.12.2007

Репутация: нет
Всего: 1



Ну, что нет знатаков!?
PM MAIL WWW   Вверх
skyboy
Дата 21.5.2010, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



т.е. ты ожидаешь, что переменная $Result, объявленная в методе init() станет автоматически доступна в методе __IncludeTemplate()?
PM MAIL   Вверх
zibox86
Дата 21.5.2010, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 11.12.2007

Репутация: нет
Всего: 1



skyboy, Можно и так сказать.
PM MAIL WWW   Вверх
skyboy
Дата 21.5.2010, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



такого не будет.
сохраняй в поле объекта и во втором методе обращайся уже $this->someVariable
PM MAIL   Вверх
NewDima
Дата 21.5.2010, 15:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



Код

$this->__IncludeTemplate($Result);
...
public function __IncludeTemplate($Result){

так нельзя чтоль?
PM ICQ   Вверх
skyboy
Дата 21.5.2010, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



 smile а, точно!
PM MAIL   Вверх
zibox86
Дата 21.5.2010, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 11.12.2007

Репутация: нет
Всего: 1



NewDima,  $Result может и не быть или будет называть по другому.

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0931 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.