Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Считывание 2 классов в одном
dima9595  
 ۩     Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 15
Пользователь №: 39394
На форуме: 3 года, 3 месяца, 14 дней
Карма:




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

Проблема в следующем:
Есть 2 файла, а в нём 2 класса. В одном файле я делал простой шаблонизатор, а во втором парсер ini файла. И мне хотелось бы что бы с парсера ini файла считывалась инфа и выводилась в шаблонизатор.

Шаблонизатор:
Скрытый текст

/* 
* ================================== 
* Copyright 2014 Дмитрий Кузнецов 
* ================================== 
* Шаблонизатор 
* ================================== 
*/ 

require_once(ENGINE_DIR . 'engine.php'; // Подключаю движок 

class Template{ 
       var $dir_templates = 'templates/';   // Директория с шаблонами 
       var $dir_template = 'default/';   // Директория с шаблоном 
       var $tpl_file = 'main.tpl';   // Файл главной страницы 

    function __construct(){ 
          $this->dir = $this->dir_templates . $this->dir_template;   // Получаем директорию до папки с шаблоном 
    } 

    function load_tpl(){ 
          $tpl = file_get_contents($this->dir . $this->tpl_file);   // Считываем файл для дальнейшего парсинга 

          ## Замены 
          $tpl = str_replace('{title}', 'da', $tpl); 
          $tpl = str_replace('{templates}', $ini['Templates'], $tpl); // Вот здесь, вместо "$ini['Templates'] " должно подставиться значение с массива (парсинг ini файла) 

          return $tpl; 
    } 


$template = new Template(); 
?>



Движок:
Скрытый текст
<?php 
/* 
* ================================== 
* Copyright 2014 Дмитрий Кузнецов 
* ================================== 
* Движок 
* ================================== 
*/ 

// Подключаем БД 
require_once(ENGINE_DIR . '/db.php'; 
// Подключаем шаблонизатор 
require_once(ENGINE_DIR . '/modules/templates.php'; 

class engine{ 

      function parse_ini(){ 
            $ini = parse_ini_file(ENGINE_DIR . 'data/engine.ini'; 
      } 


$engine = new engine(); 
$engine->parse_ini(); 
?>


Извените за кривоту письма, просто первый раз пишу на данном форуме и мне не понятно как здесь работать.(

Это сообщение отредактировал dima9595 - 19.04.2014 - 14:39
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dima9595  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 15
Пользователь №: 39394
На форуме: 3 года, 3 месяца, 14 дней
Карма:




Ну что, кто нить знает как это решить?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26449
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 14 дней
Карма: 739




знает))

инклудишь оба файла с классами (по уму конечно автолодер)

в классе шаблона создаёшь объект класса парсера и работаешь с ним.

а в чём проблема?

а зачем использовать синтаксис php 4 ? он устарел как бэ

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

str_replace в юникоде ведёт себя не адекватно с кириллицей - в юникоде использую strtr() ну и для строковых функций - функции с префиксом mb_*


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dima9595  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 15
Пользователь №: 39394
На форуме: 3 года, 3 месяца, 14 дней
Карма:




Цитата
синтаксис php 4

С синтаксисом 5 версии не сильно таки знаком. Например, что поменять нужно?

Цитата
если вдруг файлы не прочитаются или отсутствуют - тебя засыпет ошибками

Это не имеет значения. Так как они должны быть)

Цитата
str_replace в юникоде ведёт себя не адекватно с кириллицей

Не замечал подобного

Цитата
ну и для строковых функций - функции с префиксом mb_*

Возьму на заметку

Если не сложно, не мог бы показать пример реализации? Просто я ещё зелёный в ООП)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26449
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 14 дней
Карма: 739




Когда отвечают на дельное замечание

Цитата
Это не имеет значения. Так как они должны быть)


то зачем я буду тратить своё время на на разъяснения и примеры)))

я вроде ничего сложного не сказал.

ты как объект класса создаётся знаешь?


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dima9595  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 15
Пользователь №: 39394
На форуме: 3 года, 3 месяца, 14 дней
Карма:




Цитата
Это не имеет значения. Так как они должны быть)

Я имел ввиду то, что файл точно должен существовать. И ни каких ошибок не должно быть.

Цитата
ты как объект класса создаётся знаешь?

Если не ошибаюсь:
$name = new name();

Это сообщение отредактировал dima9595 - 21.04.2014 - 15:48
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26449
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 14 дней
Карма: 739




ага. ну в чём проблема создать экземпляр объекта класса в методе другого класса?

Цитата
Copyright 2014 Дмитрий Кузнецов 
такие вещи просто так не пишутся)


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dima9595  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 15
Пользователь №: 39394
На форуме: 3 года, 3 месяца, 14 дней
Карма:




Цитата
такие вещи просто так не пишутся)

Такие вещи можно увидеть почти на любом сайте.
Либо Copyright, либо Powered by...

Цитата
ну в чём проблема создать экземпляр объекта класса в методе другого класса?

Из-за того, что я ещё изучаю ООП - мне не совсем понятно что нужно делать(

Т.е. в шаблонизаторе дописать в конце:
$engine = new parse_ini();
Так что ли?

Это сообщение отредактировал dima9595 - 21.04.2014 - 15:55
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26449
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 14 дней
Карма: 739




class A{
public function __construct(){
}


public function methodNameA(){
return 'this methodName of class A';
}
}


class B{
public function __construct(){
}


public function methodNameB(){
$a = new A;
return $a->methodNameA();
}
}


$b = new B;
$mnB = $b->methodNameB();

echo $mnB;//this methodName of class A


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dima9595  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 15
Пользователь №: 39394
На форуме: 3 года, 3 месяца, 14 дней
Карма:




Vasinsky, спасибо. Завтра посмотрю пример поконкретней)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dima9595  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 15
Пользователь №: 39394
На форуме: 3 года, 3 месяца, 14 дней
Карма:




Vasinsky, всё работает, ещё раз спасибо. Вот только я не пойму, как мне вывести определённое значение. Пример:

Engine:
// Подключаем БД
require_once(ENGINE_DIR . '/db.php');
// Подключаем шаблонизатор
require_once(ENGINE_DIR . '/modules/template.php');

class Engine{

public function parse_ini(){
// Парсер ini файла движка
$pini = parse_ini_file(ENGINE_DIR . '/data/engine.ini');
}
}

$engine = new Engine();


Template:
require_once(ENGINE_DIR . 'engine.php');	// Подключаем движок

class Template{
var $dir_templates = 'templates/'; // Директория с шаблонами
var $dir_template = 'default'; // Директория с шаблоном
var $tpl_file = 'main.tpl'; // Файл главной страницы

function __construct(){
$this->dir = $this->dir_templates . $this->dir_template; // Получаем директорию до папки с шаблоном
}

function load_tpl(){
$engine = new Engine; // Создаём объект движка
print $engine->parse_ini();

$tpl = file_get_contents($this->dir .'/'. $this->tpl_file); // Считываем файл для дальнейшего парсинга

$start = microtime(true);
usleep(320);
$end = microtime(true);
$runtime = $end - $start;
$l_time = 'Время выполнения скрипта в микросекундах: '. $runtime;

## Замены
$tpl = str_replace('{title}', 'Заголовок', $tpl); // Получаем заголовок
$tpl = str_replace('{theme}', $this->dir, $tpl);
$tpl = str_replace('{copyright}', $this->copyright, $tpl); // Получаем копирайт
$tpl = str_replace('{load_time}', $l_time, $tpl);
$tpl = str_replace('{lo}', $pini['Title'], $tpl);

return $tpl;
}

}
$template = new Template(); // Создаём объект
print $template->load_tpl(); // Выводит шаблон


Как мне вывести $pini['Title']?
Пробовал разными способами, но так и не получилось(

Это сообщение отредактировал dima9595 - 22.04.2014 - 10:42
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26449
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 14 дней
Карма: 739




у тебя задача вывести title
Цитата
Как мне вывести $pini['Title']?


или вывести шаблон, где уже всё заменено?
Цитата
print $template->load_tpl(); // Выводит шаблон


  class Template{
public $title;
public $body;
public $tpl;

public function __construct($tpl){
$this->tpl = $tpl;
}

public function loadTpl(){
$replacement = array(
'{title}'=>$this->title,
'{body}'=>$this->body
);

return strtr($this->tpl, $replacement);
}
}


$tpl = '<html>
<head>
<title>{title}</title>
</head>
<body>
{body}
</body>
</html>'
;

$title = 'Заголовок';
$body = 'Тело документа';

$obj = new Template($tpl);
$obj->title = $title;
$obj->body = $body;

echo $obj->loadTpl();


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dima9595  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 15
Пользователь №: 39394
На форуме: 3 года, 3 месяца, 14 дней
Карма:




Извени, не правильно выразился, мне нужно получить значение $pini['Title'] и подставить в:
$tpl = str_replace('{lo}', $pini['Title'], $tpl);
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26449
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 14 дней
Карма: 739




class Engine{

public function parse_ini(){
// Парсер ini файла движка
$pini = parse_ini_file(ENGINE_DIR . '/data/engine.ini');
}
}


где return ?


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dima9595  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 15
Пользователь №: 39394
На форуме: 3 года, 3 месяца, 14 дней
Карма:




Цитата
где return ?

Он есть, только здесь забыл дописать(
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

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

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса