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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неизвестные ошибки 
:(
    Опции темы
systemIV
Дата 5.6.2011, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Пытаюсь переписать класс, с использованием конструкторов и деструкторов.
Скрипт шаблонизатора, я хочу что бы конструктор принимал имя шаблона, а деструктор выводил результат работы класса на экран.
Вылезает вот эта ошибка:
Код

 Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION


Вот мой конструктор:
Код

//Конструктор класса
        function __construct($template){
            $this->template_file = $template;
            $this->getFile($this->template_file);
        }

Вот создание объекта:
Код

//Пример работы
    $temp = new template("template.tpl");
    $temp->getValue("title", "Заголовок");
    $temp->getValue("text", "Привет мир!");
    $temp->getValue("other", "Дурацкий текст");


Выводит ошибку на строке, где я создаю объект
PM ICQ Skype   Вверх
bars80080
Дата 5.6.2011, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



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

вообще ошибка указывает на проблемы с синтаксисом - это незакрытые скобки, либо лишние скобки, нехватка базового элемента. точнее вглядывайтесь в текст и проверьте парность скобок
PM MAIL WWW   Вверх
Sanchezzz
Дата 5.6.2011, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



  попробуйте след конструкцию. 
Код

 $this->filecontent = null;
 $this->filecontent = $this->getFile($this->template_file);

а функцию getFile переделать чтобы возращела результат а не записывала в свойство



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
systemIV
Дата 5.6.2011, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

<?php
    class template{
    
    //Инициализируем переменные, и сразу задаём тип
        private $template_content = "";
        private $template_array_values = array();
        private $template_result = "";
        private $template_file = "";
        
    //Конструктор класса
        function __construct($template){
            $this->template_file = $template;
            $this->getFile($this->template_file);
        }
        
    //Получаем имя файла, и сразу переводим в строку
        private function getFile(){
            if(!is_file($this->template_file)){
                echo "<p> Указан не верный адрес шаблона </p>";
                return;
            } 
            $this->template_content = file_get_contents($this->template_file);
        }
        
    //Получаем переменную и её значение
        public function getValue($var, $value_input){
            if($this->template_array_values[$var]){
                echo "<p> Переменная $var уже существует в шаблоне. </p>";
                return;
            }
            $this->template_array_values[$var] = $value_input;
        }
        
    //Функция обработки страницы
        private function replaceContent(){
            $this->template_result = $this->template_content;
            foreach($this->template_array_values as $key => $value){
                $this->template_result = str_replace('{'.$key.'}', $value, $this->template_result);
            }
            
            if($this->template_result == ""){
                echo "<p> Произошёл сбой при обработке страницы. </p>";
            }else{
                return $this->template_result;
            }
        
    //Вывод результата на экран
        function __destruct(){
            $this->replaceContent();
            echo $this->template_result;
        }
    }
    
    //Пример работы
    $temp = new template("template.tpl");
    $temp->getValue("title", "Заголовок");
    $temp->getValue("text", "Привет мир!");
    $temp->getValue("other", "Дурацкий текст");
?>


Добавлено через 27 секунд
Вот такой вот код, и ничего не помогает
PM ICQ Skype   Вверх
нуп
Дата 5.6.2011, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

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



Не закрыта скобка в классе перед деструктором  smile  Зачем о таких ошибках писать на форуме, можно самому найти за пару минут  smile 
PM MAIL   Вверх
systemIV
Дата 5.6.2011, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Упс. Сори, не велите казнить=)
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1148 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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