PHP.SU

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

Страниц (4): « 1 2 3 [4]

> Найдено сообщений: 57
Anchor Отправлено: 31 Мая, 2014 - 18:12:31 • Тема: Как лучше писать путь у include ? • Форум: Вопросы новичков

Ответов: 15
Просмотров: 523
LIME пишет:
можешь поискать любой PSR на русском
например PSR-0
принципы те же но с небольшим отличием
но это только выглядит как умный стандарт
на самом деле все очень просто

Ааа, ну ок)

LIME пишет:
PHP шагнул в ООП целиком и бесповоротно
придется осваивать иначе никак

Не не, я не против ООП=) Просто пишу приложение в учебных целях. И хочу для лучшего понимания сначала написать полностью процедурно. Затем это же переписать на ООП
Anchor Отправлено: 31 Мая, 2014 - 18:00:47 • Тема: Как лучше писать путь у include ? • Форум: Вопросы новичков

Ответов: 15
Просмотров: 523
LIME пишет:
и как бонус для общего развития сообщу о таких изобретениях как autoload и PSR-4

Блин не нашел нигде перевода PSR-4 . Но там тоже для классов как я понял? Я пока пишу вообще без ООП
Anchor Отправлено: 31 Мая, 2014 - 11:55:19 • Тема: Как лучше писать путь у include ? • Форум: Вопросы новичков

Ответов: 15
Просмотров: 523
Есть index.php в корневухе приложения. Он инклудит modules/myModule1/index.php в котором еще include.

Вопрос как лучше писать путь? Или совершенно пофиг?

modules/myModule1/index.php
PHP:
скопировать код в буфер обмена
  1. include 'modules/myModule1/models/'.$type_page.'.php'; //
  2. include 'models/'.$type_page.'.php'; //
  3. define('MODULE_PATH', dirname(__FILE__)); include MODULE_PATH.'modules/myModule1/models/'.$type_page.'.php'; //
Anchor Отправлено: 30 Мая, 2014 - 13:43:58 • Тема: Динамические инклуды. Кто как реализует? • Форум: Вопросы новичков

Ответов: 4
Просмотров: 175
вики:
Цитата:

Проверять, что $module присвоено одно из допустимых значений:
<?
...
$module = $_GET['module'];
$arr = array('main', 'about', 'links', 'forum');
if (!in_array($module,$arr)) $module = $arr[0];
include $module . '.php';
...
?>
Этот способ является более эффективным, красивым и аккуратным.


Я тоже к такому варианту склонялся. Сканировать папку modules, собрать имена подпапок в массив, проверять вхождение в этот массив $module . Но наверно более долгая операция, т.к. + обращение к файл. системе. Хотя хз
Anchor Отправлено: 30 Мая, 2014 - 13:39:44 • Тема: Динамические инклуды. Кто как реализует? • Форум: Вопросы новичков

Ответов: 4
Просмотров: 175
Ch_chov пишет:
Если модули это классы, то автозагрузка классов тоже хороший вариант.

Не у меня не классы. Там процедурный код. Но возьму на заметку, на будущее.
Anchor Отправлено: 30 Мая, 2014 - 13:19:46 • Тема: Динамические инклуды. Кто как реализует? • Форум: Вопросы новичков

Ответов: 4
Просмотров: 175
Всех приветствую!

Есть папка 'modules'. В ней подпапки модулей 'myModule1/' , 'myModule2/', etc. В зависимости от параметра $_GET['module'] загружается соответствующий модуль. Имя параметра - совпадает с папкой модуля.

Писать просто include 'modules/'.$module.'/index.php'; Как я понимаю не безопасно. Верно?

1) Вариантов подключения с валидацией - в принципе много. Вопрос - как сами реализуете подобное?

2) Стеснялся задать тупой вопрос=) Но все же, для параноика.. Каким образом работают ф-ии/языковые конструкции в РНР? Т.е. здесь - include 'modules/'.$module.'/index.php' Мне нужно беспокоится только за тот случай, если в качестве строки $module окажется путь к другому файлу, так? А если $module будет содержать строку произвольного РНР кода, есть ли вероятность что он здесь выполнится? В include, или напр в ф-ии file_exists('modules/'.$module.'/index.php') ? Напр. $module = "myfile.php'; <тут какой-то вредоносный код>";
Anchor Отправлено: 29 Мая, 2014 - 14:37:23 • Тема: PDO: prepare или прямые запросы в простых SELECT-ах? • Форум: Вопросы новичков

Ответов: 29
Просмотров: 1710
LIME пишет:
Anchor пишет:
Ведь 100% знаю, что $item_id теперь пролезет только ЧИСЛОВОЙ. Или все же есть нюансы и здесь?
есть
рано или поздно забудешь валидировать/фильтровать
(Добавление)
и кстати плейсхолдеры не отменяют валидацию

Т.е. дело просто в стиле(в данном случае)? Мол просто привыкать так писать везде (бинды)

(Добавление)
teddy пишет:
При биндинге параметров можно явно указывать тип передаваемого значения

Угу, thanks!
Anchor Отправлено: 28 Мая, 2014 - 14:37:43 • Тема: PDO: prepare или прямые запросы в простых SELECT-ах? • Форум: Вопросы новичков

Ответов: 29
Просмотров: 1710
Нашел интересную статью, как раз на эту тему http://habrahabr[dot]ru/post/149613/

Повторюсь, задавал вопрос Улыбка :

Anchor пишет:
Каков принцип работы плейсхолдеров? Я понимаю, если происходит подстановка строковых параметров. Тогда, да, как понимаю, там этот параметр, вылижут, отэкранируют, проверят, и пр. Со строковыми параметрами - безусловно удобнее.

Но: не могу понять, в данном, конкретном случае:

CODE (SQL):
скопировать код в буфер обмена
  1. 'SELECT * FROM table WHERE id=:id LIMIT 1'

Могу же я сделать, просто так:


Ведь 100% знаю, что $item_id теперь пролезет только ЧИСЛОВОЙ. Или все же есть нюансы и здесь?
Anchor Отправлено: 28 Мая, 2014 - 12:26:06 • Тема: PDO: prepare или прямые запросы в простых SELECT-ах? • Форум: Вопросы новичков

Ответов: 29
Просмотров: 1710
Каков принцип работы плейсхолдеров? Я понимаю, если происходит подстановка строковых параметров. Тогда, да, как понимаю, там этот параметр, вылижут, отэкранируют, проверят, и пр. Со строковыми параметрами - безусловно удобнее.

Но: не могу понять, в данном, конкретном случае:

CODE (SQL):
скопировать код в буфер обмена
  1. 'SELECT * FROM table WHERE id=:id LIMIT 1'

Могу же я сделать, просто так:


Ведь 100% знаю, что $item_id теперь пролезет только ЧИСЛОВОЙ. Или все же есть нюансы и здесь?
Anchor Отправлено: 28 Мая, 2014 - 04:15:14 • Тема: PDO: prepare или прямые запросы в простых SELECT-ах? • Форум: Вопросы новичков

Ответов: 29
Просмотров: 1710
Ок, thanks. А выигрыш в скорости происходит только в рамках одного http-запроса? Т.е.: перешли по УРЛ(сделали http-запрос), далее при выполнении php, произошла подготовка SQL запроса (prepare); теперь (в рамках этого же http-запроса) делаем неск-ко execute() например в цикле. Вопрос: выигрываем по скорости только в рамках этого запроса? А если мы стали ходить, по страницам товаров, например (другие http-запросы), где меняется только $item_id в "WHERE id=$item_id" - мы не получаем выигрыша по скорости в этом случае? (там же вроде как кешируется шаблон SQL запроса на стороне СУБД)
Anchor Отправлено: 27 Мая, 2014 - 19:48:49 • Тема: PDO: prepare или прямые запросы в простых SELECT-ах? • Форум: Вопросы новичков

Ответов: 29
Просмотров: 1710
OrmaJever пишет:
но в подготовленных запросах код лучше выглядит

Можно уточнить, в каком плане лучше выглядит, что под этим имелось ввиду? Не понял просто

Плэйсхолдеры, я правильно понимаю, здесь вообще нет смысла использовать? :

PHP:
скопировать код в буфер обмена
  1. if (!is_numeric($item_id)) error(404, '');
  2. $query = "SELECT $fields_str FROM $db_table WHERE id=$item_id";
  3.  
  4. //$bottom_lim, $top_lim зависят, и расчитываются от параметра $_GET['page']
  5. $query = "SELECT $fields_str FROM $db_table LIMIT $bottom_lim, $top_lim";
Anchor Отправлено: 27 Мая, 2014 - 19:20:26 • Тема: PDO: prepare или прямые запросы в простых SELECT-ах? • Форум: Вопросы новичков

Ответов: 29
Просмотров: 1710
Подскажите плиз, что в подобных запросах рациональнее использовать(что будет быстрее работать)? Делать такие запросы в PDO с prepare, либо делать их напрямую ->query() ?

1
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT $fields_str FROM $db_table";
  2. $STH = $PDO->prepare($query);
  3. $STH->execute();
  4. $table_data = $STH->fetchAll(PDO::FETCH_ASSOC);

2
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT $fields_str FROM $db_table WHERE id=:id";
  2. $STH = $PDO->prepare($query);
  3. $STH->bindParam(':id', $item_id);
  4. $STH->execute();
  5. $item = $STH->fetch(PDO::FETCH_ASSOC);


Или?
1
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT $fields_str FROM $db_table";
  2. $result = $PDO->query($query);

2
PHP:
скопировать код в буфер обмена
  1. if (!is_numeric($item_id)) error(404, '');
  2. $query = "SELECT $fields_str FROM $db_table WHERE id=$item_id";
  3. $result = $PDO->query($query);

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB