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

> Request
twin  
Дата
Цитировать сообщение

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



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 7 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 16 дней


Цитата (AllesKlar @ 28.10.2015 - 15:07)
А вот тут можно плавно перейти к горячему вопросу об геттерах и сеттерах

Вот потому и не нравится мне сей подход. В спецификации задекларирован простой синтаксис на грани нативного. А обезличенные геттеры совсем не вписываются в концепцию. Это во-первых сложно для непосвященных, нужно курить доки. Во вторых усложняет логику самого скрипта. Причем снижая функциональность. Я не зря давал ссылку на Yii. Геттеры конечно нужны. Но не в таком виде.

Есть два приемлимых варианта.
1. Синтаксис похож на нативное обращение к переменной:
$request = new Request;
$page = $request->POST('page');

2. Лучше и функциональнее похожий на тернарник:
$request = new Request;
$page = $request->iniGET('page', 'index');


Это в фреймворке будет возможно написать так:
$page = Abc::getService('Request')->iniGET('page', 'index');

Бесит сия веревка конечно, но что поделать, раз каноны. Зато все очень просто. Фреймворк получается SOA, эта комбинация основная, её не забудешь:
Abc::getService('Request')

Есть еще алиас для ленивых
Abc::gs('Request')

Дальше видна принадлежность и действие. Инициализация GET. Можно конечно и классический getGET оставить. Но тавтология, да и не понятно, почему нужно брать оттуда, когда он в воздухе висит. :)


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

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



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3377
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 13 дней
Карма: 170




twin
Ваще согласен.
Тоже сторонник прозрачности.
Каждый раз готов душить нашего яваскриптика, когда он понавешает на всякие там дивы событий и прочих безымянных функций, а потом вылавливай их по всем файлам.
Модно, меньше писанины, но ведь люди же после тебя это в руки берут smile.gif


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

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



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 753
Пользователь №: 32032
На форуме: 4 года, 8 месяцев, 5 дней
Карма: 18




Если понадобятся параметры например в контроллере приложения.

1. Передавать в контроллер приложения объект Request через аргумент

new AppController($request);

///////

$model = new model();
$model->execute($sql, $request->getQuery('id'));


2. Инициализировать новый Request

$request = new Request();
$model->execute($sql, $request->getQuery('id'));


3. На входе FrontControler создать new Request() и передать данные в реестр RequestRegistry и тогда когда понадобятся данные, уже не надо повторно инициализировать Request и вызывать конструктор, а просто юзать RequestRegistry getValue().


RequestRegistry::getRequest()->getValue('get', 'arg');


Если мне правильно понятна суть использования RequestRegistry.

Или почему в ABC до сих пор нет Registry, может быть этот паттерн устарел и Builder, ServiceLocator ... заменили функционал Registry.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

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



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 7 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 16 дней


Цитата (OleKh @ 28.10.2015 - 16:27)
Или почему в ABC до сих пор нет Registry, может быть этот паттерн устарел и Builder, ServiceLocator ... заменили функционал Registry.

Именно так. Сейчас DI в моде. Не нужен никому реестр давно)


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
OleKh  
 ۩  Дата
Цитировать сообщение

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



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 753
Пользователь №: 32032
На форуме: 4 года, 8 месяцев, 5 дней
Карма: 18




Цитата (twin @ 28.10.2015 - 18:32)
Именно так. Сейчас DI в моде. Не нужен никому реестр давно)

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

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

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



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 7 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 16 дней




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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
[x] Дата
Цитировать сообщение

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



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 7 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 16 дней


Ну что, как говаривал какой-то Зорг (недавно тут процитировали :D ) - сам не зделаешь, никто не сделает.

Вот такой сан-минимум получился. Потом расширим до полноценного компонента. Пока для ядра этого вроде хватает.

Тут я где напортачил? :)
<?php

namespace ABC\Abc\Core;

/**
* Класс BaseRequest
*
* NOTE: Requires PHP version 5.5 or later
*
@author phpforum.su
*
@copyright © 2015
*
@license http://www.wtfpl.net/
*/
class BaseRequest
{
/**
*
@var \ABC\Abc\Core\Router
*/

public $router;

public $GET;
public $uriHash;

/**
* Конструктор
*
*
@param object $router
*/

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

if (!empty($_SERVER['QUERY_STRING'])) {
$this->GET = $this->parseQueryString();
} else {
$this->GET = $this->parseRequestUri();
}
}


/**
* Инициализация GET параметров
*
*
@param string $key
*
@param string $default
*
*
@return string
*/

public function iniGET($key, $default = null)
{
return isset($this->GET[$key]) ? $this->GET[$key] : $default;
}

/**
* Возвращает PATH
*
*
@return srring
*/

public function getPath()
{
if (isset($_SERVER['REQUEST_URI'])) {
return parse_url($_SERVER['REQUEST_URI'])['path'];
}
return '/';
}

/**
* Разбирает в массив QUERY_STRING
*
*
@return array
*/

protected function parseQueryString()
{
$queryString = urldecode($_SERVER['QUERY_STRING']);
mb_parse_str($queryString, $out);
return $out;
}

/**
* Разбирает массив HASH в массив GET по правилам роутинга
*
*
@param
*
*
@return void
*/

protected function parseRequestUri()
{
$uriHash = $this->createUriHash();
return $this->router->convertUri($uriHash);
}

/**
* Преобразует URI в массив
*
*
@param
*
*
@return void
*/

protected function createUriHash()
{
$this->uriHash = explode('/', $this->getPath());
return $this->uriHash;
}
}


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

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

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

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