PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 16
wats Отправлено: 19 Июля, 2010 - 20:50:31 • Тема: Просто и эффективно • Форум: Программирование на PHP

Ответов: 3
Просмотров: 299
PHP:
скопировать код в буфер обмена
  1. $_server = !empty($_POST['cp_server']) ? (int)$_POST['cp_server'] : die("Error Server ID.");
  2. $_remember = !empty($_POST['cp_remember']) ? (bool)$_POST['cp_remember'] : false;
  3. $_attachip = !empty($_POST['cp_attachip']) ? (bool)$_POST['cp_attachip'] : false;
wats Отправлено: 19 Июля, 2010 - 20:37:36 • Тема: Static and not Static • Форум: Программирование на PHP

Ответов: 7
Просмотров: 611
так нельзя сделать и вообще в чем смысл?
wats Отправлено: 19 Июля, 2010 - 15:16:56 • Тема: Совет по модулям для сайта... • Форум: Программирование на PHP

Ответов: 8
Просмотров: 604
unded, у вас недоработка в синглтоне:
PHP:
скопировать код в буфер обмена
  1. static public function GetInstance()
  2. {
  3.  
  4.         return (self::$_instance === NULL) ? new self() : self::$_instance;
  5.  
  6. }//GetInstance

$_instance всегда равна NULL
wats Отправлено: 19 Июля, 2010 - 09:14:22 • Тема: Класс шаблонизатор, интересно мнение опытных ооп-php-программистов • Форум: Программирование на PHP

Ответов: 12
Просмотров: 2328
JustUserR, вы как всегда правы) Я пересмотрел свое мнение на счет этого.
Сейчас начал создавать свой небольшой mvc-каркас, так сказать мини-фреймворк для будующих приложений по примеру реализации Yii framework, думаю в нем будет использоваться именно этот шаблонизатор.
wats Отправлено: 08 Июля, 2010 - 11:38:06 • Тема: может ли быть виновен php.ini • Форум: Программирование на PHP

Ответов: 32
Просмотров: 1635
avrudoi, извините конечно, но вы тупите конкретно Получай молотком, вам люди русским языком обьясняют что и как, идите курите маны.
wats Отправлено: 08 Июля, 2010 - 07:36:14 • Тема: код продолжает выполняться • Форум: Программирование на PHP

Ответов: 2
Просмотров: 303
А зачем там символ &, может надо так http://localhost/create/?st=1
И еще в $_GET[st] забыли кавычки, надо так $_GET['st']
wats Отправлено: 07 Июля, 2010 - 20:37:52 • Тема: Выполнение php кода в html шаблоне. • Форум: Программирование на PHP

Ответов: 6
Просмотров: 503
ortis, тебе для этого подойдет моя функция block http://forum.php.su/topic.php?fo...23557#1278523557 .
wats Отправлено: 07 Июля, 2010 - 20:25:57 • Тема: Класс шаблонизатор, интересно мнение опытных ооп-php-программистов • Форум: Программирование на PHP

Ответов: 12
Просмотров: 2328
Эх что то я разочаровался, так как не вижу смысла использовать такой класс, так как вместо него можно использовать просто пользовательскую функцию для вставки подшаблонов:
PHP:
скопировать код в буфер обмена
  1.     function block($template_block, array $data = NULL)
  2.     {
  3.         if (file_exists($template_block))
  4.         {
  5.             if ($data !== NULL) extract($data, EXTR_SKIP);
  6.             ob_start();
  7.             require $template_block;
  8.             $out = ob_get_contents();
  9.             ob_end_clean();
  10.             return $out;
  11.         }
  12.         else
  13.         {
  14.             return 'File ' . $template_block . ' not exists.';
  15.         }
  16.     }
  17.  
  18.     $block = block('views/menu.php');

все остальное получается лишнее Огорчение
wats Отправлено: 05 Июля, 2010 - 20:44:52 • Тема: как передать переменную в класс • Форум: Программирование на PHP

Ответов: 8
Просмотров: 6453
PHP:
скопировать код в буфер обмена
  1. class empl
  2. {
  3.     function mth($name)
  4.     {
  5.         //сдесь обрабатываются полученные данные c $name
  6.     }
  7. }
  8.  
  9. $empl = new empl();
  10. $empl->mth($_POST['name']);
wats Отправлено: 05 Июля, 2010 - 09:42:12 • Тема: Ищу php_pdo.dll и php_pdo_mysql.dll • Форум: PEAR и PECL

Ответов: 4
Просмотров: 11117
JustUserR, благодарю, что то я сразу не догадался вытащить нужные библиотеки из скомпилированные версии, но вот не пойму какой именно релиз там нужно скачать? Вижу там только PHP 5.2 (5.2.13)
wats Отправлено: 05 Июля, 2010 - 09:23:05 • Тема: Класс шаблонизатор, интересно мнение опытных ооп-php-программистов • Форум: Программирование на PHP

Ответов: 12
Просмотров: 2328
JustUserR пишет:
Тем не менее в общем случае в вашем коде переменная $block может быть подвержена такому перекрытию в случае если в хеш-массиве $data будет передан соответствующий ключ - но это легко решается путем добавления опции EXTR_SKIP к функции extract поскольку по умолчанию подразумевается перезапись опцией EXTR_OVERWRITE

Вы правы, поправил, заодно изменил $block на $template_block, что бы уж наверняка Улыбка
PHP:
скопировать код в буфер обмена
  1.     public function block($template_block, array $data = NULL)
  2.     {
  3.         if (file_exists($template_block))
  4.         {
  5.             if ($data !== NULL) extract($data, EXTR_SKIP);
  6.             ob_start();
  7.             require $template_block;
  8.             $out = ob_get_contents();
  9.             ob_end_clean();
  10.             return $out;
  11.         }
  12.         else
  13.         {
  14.             return 'File ' . $template_block . ' not exists.';
  15.         }
  16.     }

Едиственное, что пока не использовал runkit_lint_file, так как у меня на локальном сервере выдает ошибку, что такая функция не найдена, наверно должно быть установлено какое то расширение.
С PHP_CodeFilter пока не знаком, обязательно попробую.
wats Отправлено: 04 Июля, 2010 - 13:57:55 • Тема: Ищу php_pdo.dll и php_pdo_mysql.dll • Форум: PEAR и PECL

Ответов: 4
Просмотров: 11117
Здраствуйте! Помогите найти библиотеки php_pdo.dll и php_pdo_mysql.dll для php версии 5.2.8, может кто выложит?
wats Отправлено: 04 Июля, 2010 - 12:10:48 • Тема: Класс шаблонизатор, интересно мнение опытных ооп-php-программистов • Форум: Программирование на PHP

Ответов: 12
Просмотров: 2328
JustUserR пишет:
Разработанная вами новая версия класса является действительно более эффективной - а также компоненты вложенных шаблонов являются лучше разделенными и контролируемыми

Спасибо большое Улыбка
JustUserR пишет:
во-первых перед выполнением оператора extract имеет смысл просмотреть значения всех переменных которые соответствуют ключам хеш-массива - и выполнить их сохранение во временный массив а также после окончания выполнения PHP-кода подшаблона вернуть старые значения переменным - это позволит защититься от потенциальных ошибок при передаче в хеш-массиве $data ключей которые соответствуют реальным переменным

Здесь не совсем понял, вы имеете в виду, что возможны конфликты между внешними переменными и переменными полученными из массива $data? Если да, то такого конфликта не может быть, так как метод block работает независимо и возвращает полностью обработанный шаблон где все переменные уже заменены на их значения.
JustUserR пишет:
Во-вторых можно добавить проверку на синтаксическую правильность подключаемого шаблона

Обязательно это учту.
wats Отправлено: 04 Июля, 2010 - 00:16:43 • Тема: Класс шаблонизатор, интересно мнение опытных ооп-php-программистов • Форум: Программирование на PHP

Ответов: 12
Просмотров: 2328
Вообщем переписал класс, сейчас он стал проще и удобней в работе, прошу оценить.
Сам класс view.class.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class View {
  3.    
  4.     protected $_template;
  5.     protected $_data = array();
  6.    
  7.     public function __construct($template)
  8.     {
  9.         if (file_exists($template))
  10.         {
  11.             $this->_template = $template;
  12.         }
  13.         else
  14.         {
  15.             exit('File ' . $template . ' not exists.');
  16.         }
  17.     }
  18.    
  19.     public function __set($key, $value)
  20.     {
  21.         $this->_data[$key] = $value;
  22.     }
  23.    
  24.     public function block($block, array $data = NULL)
  25.     {
  26.         if (file_exists($block))
  27.         {
  28.             if ($data !== NULL) extract($data);
  29.             ob_start();
  30.             require $block;
  31.             $out = ob_get_contents();
  32.             ob_end_clean();
  33.             return $out;
  34.         }
  35.         else
  36.         {
  37.             return 'File ' . $block . ' not exists.';
  38.         }
  39.     }
  40.    
  41.     public function display()
  42.     {
  43.         extract($this->_data);
  44.         require ($this->_template);
  45.     }
  46.    
  47. }
  48. ?>

Используем так:
index.php:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. header('Content-Type: text/html; charset=utf-8');
  3. // подключаем шаблонизатор и указываем основной шаблон
  4. require_once ('inc/view.class.php');
  5. $view = new View('views/template.php');
  6. // заголовок и приветствие для примера
  7. $view->title = 'Тест шаблонизатора';
  8. $view->hello = 'Добро пожаловать!';
  9. // создаем массив данных для блока меню
  10. $data_menu = array(
  11.     'block_name' => 'Блок меню',
  12.     'links' => array(
  13.         'index.php' => 'Главная',
  14.         'news.php' => 'Новости',
  15.         'about.php' => 'Контакты',
  16.     )
  17. );
  18. // создаем сам блок меню из подшаблона menu.php и массива данных $data_menu
  19. $view->block_menu = $view->block('views/menu.php', $data_menu);
  20. // выводим все на экран
  21. $view->display();
  22. ?>

Основной шаблон template.php:
PHP:
скопировать код в буфер обмена
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  5. <title><?=$title?></title>
  6. </head>
  7. <body>
  8. <h1><?=$hello?></h1>
  9. <?=$block_menu?>
  10. </body>
  11. </html>

И подшаблон menu.php:
PHP:
скопировать код в буфер обмена
  1. <div id="menu">
  2.     <p><?=$block_name?></p>
  3.     <ul>
  4.     <?PHP foreach($links  as $key => $value): ?>
  5.         <li><a href="<?=$key?>"><?=$value?></a></li>
  6.     <?PHP endforeach ?>
  7.     </ul>
  8. </div>

Как вы наверно поняли, подшаблоны подключаются через метод block и можете подключать их таким образом сколько угодно.
Подшаблон обрабатывается вместе с массивом данных предназначенных для него, в примере массивом данных является $data_menu:
PHP:
скопировать код в буфер обмена
  1. $view->block_menu = $view->block('views/menu.php', $data_menu);

Но если вам нужно просто подключить подшаблон без всяких переменных то массив данных указывать не обязательно:
PHP:
скопировать код в буфер обмена
  1. $view->block_menu = $view->block('views/menu.php');
wats Отправлено: 03 Июля, 2010 - 18:53:11 • Тема: Класс шаблонизатор, интересно мнение опытных ооп-php-программистов • Форум: Программирование на PHP

Ответов: 12
Просмотров: 2328
JustUserR, спасибо, что ответили. Буду переписывать класс.

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB