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

> Сборка
twin  
 ۩  [x] Дата
Цитировать сообщение

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



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

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

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


Оглавление.

А теперь нужен класс, который предоставляет доступ к настройкам и общим библиотекам, попутно настраивая их. От него можно наследовать контроллеры и модели, чтобы получить этот доступ.

В ООП для таких целей применяется конейнер зависимостей либо сервис-локатор. По сути, если хорошо разобраться, контейнер отличается от сервис-локатора тем, что может на лету совать зависимость в зависимость, а так тоже самое. Использование этих паттернов обусловлено тем, что при разработке используются исключительно объекты.

Мне проще, у меня нет зависимости от объектов (каламбур), я волен использовать любые инструменты. А в данном случае свою любимую статику. Не понимаю, почему её значение так принижается. Это же удобно и многое упрощает. Особенно если это сборка автономных библотек.

Оставим лирику. Вот так пока будет устроен класс сборки (я пока туда сунул класс вьюшки для наглядности).
Core/Libs/Assembly.php
<?php

namespace Core\Libs;

/**
* Класс Assembly
*
* NOTE: Requires PHP version 5.5 or later
*
@author phpforum.su
*
@copyright © 2016
*
@license WTFPL (http://www.wtfpl.net)
*/
class Assembly
{
protected static $config;

/**
* Установка конфиги
*
*
@return void
*/

public static function setting($config)
{
self::$config = $config;
}

/**
* Отображение
*
*
@return object
*/

public static function getView()
{
$view = new \Core\Libs\View\Master(self::$config);
// Тут можно настраивать либу или внедрять в неё зависимости
return $view;
}
}


Его нужно задействовать в системе, пусть этим занимается фронт-контроллер:
Core/FrontController.php
class FrontController
{
/**
* Запуск
*
*
@param object $config
*
*
@return void
*/

public static function run($config = null)
{
$config = is_object($config) ? $config->getConfig() : [];

if (isset($config['debug']) && false === $config['debug']) {
set_error_handler(['\Core\FrontController', 'error500']);
}
// Сборка библиотек
\Core\Libs\Assembly::setting($config);

$page = takeGET('page');
$controllerName = self::prepare($page);
$controller = '\App\Controllers\\'. $controllerName .'Controller';

$action = takeGET('action', 'index');
$actionName = self::prepare($action);
$action = 'action'. $actionName;

self::callApplication($controller, $action);
}


А теперь в контроллере страницы, или в любой модели, если их отнаследовать от сборки, можно пользоваться любой, предварительно настроенной библиотекой. Это конечно пока все упрощенно, на уровне заглушки. Позже будет и своего рода снглтон и новые объекты, пока так, чтобы была видна суть.
App/Controllers/ErrorController.php
<?php

namespace App\Controllers;


class ErrorController extends \Core\Libs\Assembly
{
public static function action404()
{
header("HTTP/1.1 404 Not Found");
// Тут теперь можно задействовать вьюшку (её пока нет, позже сделаем)
parent::getView()->render('404');
}

public static function action500()
{
header("HTTP/1.1 500 Internal Server Error");
parent::getView()->render('500');
}
}


Вот в такой сборке нет вообще никакой разницы, какую использовать парадигму в библиотеках. Хоть ООП, хоть процедуру, хоть фунциональную, хоть можете свою придумать, система отнесется к ней вполне дружелюбно. А не как ярые адепты "чистого" ООП.

Этот класс и есть главное отличие фреймворка от сборки. Конечно, с натяжкой и такую схему можно обозвать фреймворком, ведь хоть и минимальная, но все же инфраструктура есть. Однако язык не поворачивается. Впрочем это и не важно. Важно то, что результат одинаков, а сложность на порядок разная, и главное - никаких рамок.

Можно возразить, что класс распухнет, если будет "большой проект" с кучей библиотек. Но никакой фреймворк от этого не спасет. Даже наоборот, фреймврки обычно тянут за собой все либы, в сборке можно использовать только необходимые. Если их действительно много, то можно разделить этот класс по тематикам. И в конце концов, никто не запрещает использовать внутри тот же DIC. Полная свобода действий.

Впрочем пока рано говорить. Посмотрим, что будет дальше.
Пока это выглядит так:

Присоединённое изображение
Присоединённое изображение


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

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

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

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

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



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

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3106
Пользователь №: 16333
На форуме: 7 лет, 11 месяцев, 24 дня
Карма: 58




Цитата (twin @ 7.09.2016 - 19:47)
Можно возразить, что класс распухнет, если будет "большой проект" с кучей библиотек. Но никакой фреймворк от этого не спасет. Даже наоборот, фреймврки обычно тянут за собой все либы

Разве плохо что fw тянет с собой много либ? ведь ни кто не запрещает их разом грузить.
Цитата (twin @ 7.09.2016 - 19:47)
, в сборке можно использовать только необходимые.

в fw можно тоже использовать только необходимое, в чем отличие тогда?
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

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



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

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

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


Цитата (TMake @ 7.09.2016 - 20:06)
Разве плохо что fw тянет с собой много либ?

Я не то имел ввиду, что плохо. А то, что фреймворк не спасает от раздувания.
Цитата (TMake @ 7.09.2016 - 20:06)
в fw можно тоже использовать только необходимое, в чем отличие тогда?
Использовать - да. Но интегрировать нужно все. Пусть даже через контейнер, коллбэками, как сейчас модно. Но на серваке их все равно все держать приходится. Даже если используется 10%.


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

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

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

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


Гость пожелал остаться неизвестным

Unregistered









Assembly это язык программирования, который позволит тебе засирать своим php кодом не только бекенд, но еще и фронтенд.

А так ты конечно тот еще велосипедист. Ты на работе также пишешь?
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

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



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

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

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


Цитата (Guest @ 8.09.2016 - 04:31)
Assembly это язык программирования, который позволит тебе засирать своим php кодом не только бекенд, но еще и фронтенд.

Assembly - это "сборка" с английского. К WebAssembly не имеет никакого отношения. Я понимаю, что для вас это слово дикое и чуждое. У вас очень небольшой ассортимент названий классов. smile.gif
Цитата (Guest @ 8.09.2016 - 04:31)
А так ты конечно тот еще велосипедист. Ты на работе также пишешь?
Да. Велосипедист. И мне это нравится, и я этим горжусь. И пишу на работе именно так. Ну в основе. Конечно есть тонкости, которые тут никому не нужны.


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

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

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

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

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



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

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3106
Пользователь №: 16333
На форуме: 7 лет, 11 месяцев, 24 дня
Карма: 58




Цитата (twin @ 8.09.2016 - 02:30)
Использовать - да. Но интегрировать нужно все. Пусть даже через контейнер, коллбэками, как сейчас модно. Но на серваке их все равно все держать приходится. Даже если используется 10%.

Лишние файлы это не проблема, проблема когда простейший функционал отсутствует и его нужно делать, а сроки уже все закончились.
Если нужна простота в инструменте, то мне кажется ты немного не попал. Например есть такой fw с ним можно работать на самых низких знаниях и быть не зависимым от всех стандартов, следовательно зачем лепить велосипед который все равно придется переписывать др. комманде?
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

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



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

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

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


Цитата (TMake @ 8.09.2016 - 07:02)
Лишние файлы это не проблема, проблема когда простейший функционал отсутствует и его нужно делать, а сроки уже все закончились.

Ты как будто первый день как программируешь. Как это простейший функционал может отсутствовать... У каждого прогера есть репозиторий или коллекция ссылок на библиотеки.
Цитата (TMake @ 8.09.2016 - 07:02)
Если нужна простота в инструменте, то мне кажется ты немного не попал. Например есть такой fw с ним можно работать на самых низких знаниях и быть не зависимым от всех стандартов
Это скорее не простота, а примитив. И уж точно ты никак не будешь независимым. Любой фреймворк имеет свои правила. И чтобы как то их изменить, придется лепить костыли. Потому что в исходники лезть нельзя.
Цитата (TMake @ 8.09.2016 - 07:02)
следовательно зачем лепить велосипед
Ну я вообще об альтернативном подходе пишу. О мультипарадигмальном. Да и что за рассуждения, велосипед... Теперь что, все дружно должны на слиме писать?

Цитата (TMake @ 8.09.2016 - 07:02)
который все равно придется переписывать др. комманде?
Это с какого перепуга? Да боже упаси. biggrin.gif biggrin.gif


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

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

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

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

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



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

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3106
Пользователь №: 16333
На форуме: 7 лет, 11 месяцев, 24 дня
Карма: 58




Цитата (twin @ 8.09.2016 - 11:34)
И чтобы как то их изменить, придется лепить костыли. Потому что в исходники лезть нельзя.

Что может в microfw тебя не устроить и нужно будет лепить свое? Перезка метода для тебя костыль?

Цитата (twin @ 8.09.2016 - 11:34)
Ну я вообще об альтернативном подходе пишу. О мультипарадигмальном. Да и что за рассуждения, велосипед... Теперь что, все дружно должны на слиме писать?

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

Цитата (twin @ 8.09.2016 - 11:34)
Ты как будто первый день как программируешь. Как это простейший функционал может отсутствовать... У каждого прогера есть репозиторий или коллекция ссылок на библиотеки.

Эмм.. может у каждого велосипедиста?

Цитата (twin @ 8.09.2016 - 11:34)
Это с какого перепуга?

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

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



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

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

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


Цитата (TMake @ 8.09.2016 - 08:11)
Что может в microfw тебя не устроить и нужно будет лепить свое?

Не знаю, Бог миловал от использования фреймворков. Но люди пишут, и не зря. Что фреймворки не все могут, приходится костылить. А сам я вот с TWIG имел дело как то, так там есть косяк. Он не понимает массивы в именах элементов форм. Это была проблема кстати. И пришлось лепить костыли.
Цитата (TMake @ 8.09.2016 - 08:11)
Перезка метода для тебя костыль?
Перегрузка имелась ввиду? А как ты перезагрузишь метод системного класса? Если он внутри фреймворка крутится?
В велосипеде я это сделаю на раз, это моё, мне плевать на инкапсуляцию.

Цитата (TMake @ 8.09.2016 - 08:11)
Это как пример того, что есть инструменты более простые и без своих рамок и таких fw множество.

Будет еще один. smile.gif Кто же то должен их писать.
Цитата (TMake @ 8.09.2016 - 08:11)
Если это как пример испольнения мультипарадигмы, то она не должна уступать действующим, а даже быть лучше, иначи в чем смысл делать хуже?
Чем хуже? Я не вижу. По мне так лучше. Вот для сравнения и пишу этот велосипед.
Цитата (TMake @ 8.09.2016 - 08:11)
Эмм.. может у каждого велосипедиста?
Ну может быть и так. А что плохого в велосипедостроении?
Цитата (TMake @ 8.09.2016 - 08:11)
такова практика, особенно если меняется большая часть состава разработчиков.
Такая практика нам не нужна. biggrin.gif


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

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

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

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

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

Опции темы Ответ в темуСоздание новой темыСоздание опроса