Ответы пользователя по тегу PHP
  • Как ограничить область выполнения PHP скрипта include?

    wartur
    @wartur
    Я бы сделал как минимум через mpm_itk + сервисную прослойку.
    Ответ написан
  • Как на новый сервер поставить старую версию php (CentOS)

    wartur
    @wartur
    Недавно подобную проблему решали. Товарищ подсказывает:

    для CentOs 5.7
    надо отключить левые репозитарии, удалить php 5.4 и все его компноненты.
    потом yum search php
    если в списке есть php5.3, то вручную указываем версию yum install php53
    Ответ написан
  • php.net — Contains Malware!? Или что случилось с php.net?

    wartur
    @wartur
    Хе хе. Да действительно. Хром ругается.
    Ответ написан
    Комментировать
  • Шаблонизатор на PHP

    wartur
    @wartur
    Свой собственный. Правдо сейчас работает только под Yii. Yii + эта штука реально решает все задачи которые нужны в приложении.
    github.com/wartur/yii-thplike
    Ответ написан
    Комментировать
  • Где найти библиотеки написания дат прописью?

    wartur
    @wartur Автор вопроса
    От себя добавлю то, что надыбали товарищи:
    timeago.yarp.com/
    Ответ написан
    Комментировать
  • Подскажите PHP Template Engine

    wartur
    @wartur
    habrahabr.ru/post/137328/
    Со встроенным роутером, может быть понравится это?=)
    Ответ написан
  • PHP mb_ereg_replace - вынужден обратиться к хабру, не понимаю проблемы?

    wartur
    @wartur Автор вопроса
    Извиняюсь, проблема решена. Для тех кто вдруг наткнулся.
    До этого момента я со строкой $message поглумился этой функцией mysql_real_escape_string — она заменяет все специальные символы, включая переносы строк. Поэтому невозможно найти их потом. Надо их искать как \\r и \\n.

    Проблема в том, что я реально сдуплил с тем, что а XDEBUG все равно показывал \r\n а они там уже были в виде символов, а не в виде специальных символов.
    Ответ написан
    Комментировать
  • Зависимости скрипта PHP

    wartur
    @wartur
    Ну я не знаю таких тулов но вы можете сделать так:

    В каждой функции поставить debug_backtrace, и куда-нибудь это сохранять. Далее при нормальной работе собрать данные о том что куда вызывает, проанализировать и что-таки узнать. Из-за моих незнаний это первый вариант который мне в голову приходит. Если найдете такую тулу, киньте в ответ пожалуйста. Спс.
    Ответ написан
    1 комментарий
  • Прошу конструктивной критики на мой код на PHP

    wartur
    @wartur
    — Пользуйтесь константой DIRECTORY_SEPARATOR.

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

    — Db::initDb — а зачем в этом случае пользоваться фабрикой??? Мы же объект создаем, то есть должно быть new DB(); чисто по идее ООП. И кстати, если нет совершенно особой функциональности у ваших классов, то не надо вообще оборачивать стандартные функции. У меня например класс базы данных абстрагирует физические подключения к СУБД, и переключения между БД в одной СУБД. К нему обращаются разные объекты указывая лишь название «шлюза» (я так это назвал), а класс уже гарантирует что запрос будет произведен по нужной СУБД + БД. Еще раз в вашем случае не вижу смысла использовать фабрику (у меня испольуется фабрика, что бы просто создавать объекты с вшитым «шлюзом»).

    Советую делать так вначале инициализации:
    // директория с системой
    define('DIR_ROOT', __DIR__.DIRECTORY_SEPARATOR); // корень ядра.
    // директория с кодом движка
    define('DIR_CORE', DIR_ROOT.'core'.DIRECTORY_SEPARATOR);
    // директория с интерфейсами движка
    define('DIR_CORE_INTERFACES', DIR_CORE.'interfaces'.DIRECTORY_SEPARATOR);

    ========

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

    // директория с исключениями движка
    define('DIR_CORE_EXCEPTIONS', DIR_CORE.'exceptions'.DIRECTORY_SEPARATOR);

    // директория с абстрактными модулями движка
    define('DIR_CORE_ABSTRACT', DIR_CORE.'abstract-modules'.DIRECTORY_SEPARATOR);
    Ответ написан
    2 комментария
  • Xdebug - подскажите с решением вопроса об отображении ошибок (xdebug_start_error_collection)

    wartur
    @wartur Автор вопроса
    Господа, походу баг. Как видно из кода, функция не выполняет предназначения, даже базовое — «сокрытие данных об ошибках», про накопление ничего сказать не могу.

    /* Display errors */
    if (PG(display_errors) && !PG(during_request_startup)) {
    	char *printable_stack;
    
    	/* We need to see if we have an uncaught exception fatal error now */
    	if (type == E_ERROR && strncmp(buffer, "Uncaught exception", 18) == 0) {
    		xdebug_str str = {0, 0, NULL};
    		char *tmp_buf, *p;
    				
    		/* find first new line */
    		p = strchr(buffer, '\n');
    		/* find last quote */
    		p = ((char *) zend_memrchr(buffer, '\'', p - buffer)) + 1;
    		/* Create new buffer */
    		tmp_buf = calloc(p - buffer + 1, 1);
    		strncpy(tmp_buf, buffer, p - buffer );
    
    		/* Append error */
    		xdebug_append_error_head(&str, PG(html_errors) TSRMLS_CC);
    		xdebug_append_error_description(&str, PG(html_errors), error_type_str, tmp_buf, error_filename, error_lineno TSRMLS_CC);
    		xdebug_append_printable_stack(&str, PG(html_errors) TSRMLS_CC);
    		xdebug_str_add(&str, XG(last_exception_trace), 0);
    		xdebug_append_error_footer(&str, PG(html_errors));
    		php_output_error(str.d TSRMLS_CC);
    
    		xdfree(str.d);
    		free(tmp_buf);
    	} else {
    		printable_stack = get_printable_stack(PG(html_errors), error_type_str, buffer, error_filename, error_lineno TSRMLS_CC);
    		php_output_error(printable_stack TSRMLS_CC);
    		xdfree(printable_stack);
    	}
    }
    if (XG(do_collect_errors)) {
    	char *printable_stack;
    	printable_stack = get_printable_stack(PG(html_errors), error_type_str, buffer, error_filename, error_lineno TSRMLS_CC);
    	xdebug_llist_insert_next(XG(collected_errors), XDEBUG_LLIST_TAIL(XG(collected_errors)), printable_stack);
    }
    
    Ответ написан
    Комментировать