Думаю для ТС вопрос был риторический, желание есть, но он не двигается в направлении к своей цели.
Хотя может уже нашёл какое-то решение.
Да в php много расширений, но они работают довольно таки быстро. В данном случае применяю GD
<?php // пространство имён ядра namespace core; // Ресайз картинки class RsizeImage { private $img,$itp; // Загрузка картинки public function Load($way) { $info=getimagesize($way); $this->itp=$info[2]; switch($this->itp){ case IMAGETYPE_JPEG: $this->img=imagecreatefromjpeg($way);break; case IMAGETYPE_GIF: $this->img=imagecreatefromgif($way);break; case IMAGETYPE_PNG: $this->img=imagecreatefrompng($way); } } // Сохранение картинки public function Save($way,$itp=IMAGETYPE_JPEG,$cmp=75,$prm=null){ switch($itp){ case IMAGETYPE_JPEG: // cmp - компрессия imagejpeg($this->img,$way,$cmp);break; case IMAGETYPE_GIF: imagegif($this->img,$way);break; case IMAGETYPE_PNG: imagepng($this->image,$filename); } if($prm!=null){ chmod($way,$prm);// prm - разрешения } } // Показать картинку public function Show($itp=IMAGETYPE_JPEG){ switch($itp){ case IMAGETYPE_JPEG: header('Content-Type: image/jpeg'); imagejpeg($this->img);break; case IMAGETYPE_GIF: imagegif($this->img);break; case IMAGETYPE_PNG: imagepng($this->img); } } // Изменение размера public function Resize($width,$height){ $nimg=imagecreatetruecolor($width,$height); imagecopyresampled($nimg,$this->img,0,0,0,0,$width,$height,$this->Width(),$this->Height()); $this->img=$nimg; } // Изменение размера по ширине public function ResizeWidth($width){ $ratio=$width/$this->Width(); $height=$this->Height()*$ratio; $this->Resize($width,$height); } // Изменение размера по высоте public function ResizeHeight($height){ $ratio=$height/$this->Height(); $width=$this->Width()*$ratio; $this->Resize($width,$height); } // Маштабирование от процентов public function Scale($prc){ $width=$this->Width()*$prc/100; $height=$this->Height()*$prc/100; $this->Resize($width,$height); } // Ширина картинки public function Width(){return imagesx($this->img);} // Высота картинки public function Height(){return imagesy($this->img);} } ?>
Сейчас меня вынуждаете вам что-то доказывать, я не собираюсь вам ничего доказывать. Я занимаюсь чем мне интересно.
Человек ТС ищет инструмент, я предложил в скайпе показать и рассказать что я сделал, всё. Завтра на дачу :) вернее уже сегодня
Зависит от данных. В движке разбираю структуры страниц simplexml. Со сложными данными xml_parser, dom xml тяжеловат и медленнее, по сути можно использовать любую
Да, и для этого тоже.
Никакой встряски и передела ниши не будет. Я же не крупная кампания, я работаю сам по себе. Максимум до конца года(да ещё много работы, тривиальная задача написать документацию и то надо на это не мало времени как я уже убедился когда начал описывать, но потом решил не гнаться за двумя зайцами.., а настроить код сначала и потом описать) думаю запущу сайт проекта, буду демонстрировать возможности, искать и обучать разработчиков, и тех кому нужен такой свой инструмент для своих проектов.
Встроенными средствами php
Автолоадер для подключения классов естественно есть. Грузовик это просто класс который подключается с паттерном singleton и используется в движке и узлах для доступа к другим узлам, данным... Чтобы каждый раз не указывать нужные классы, а только этот грузовик и через него получать доступ к другим.
Когда в голове пусто, то не зачем.
А когда у человека есть идея создания оригинального сайта с какими либо сервисами, тогда кастомные решения не подходят нужно разрабатывать с ноля, чтобы меньше тратить времени на разработку придумали фреймворки. А меня лично и существующие фреймворки не устраивают, так как сделаны кучей обормотов, которые прикручивают разные либы и в итоге получается винегрет от которого потом будет мягко говоря тошнить..
jQuery, Angular, React, Vue и тд. скоро будут покуривать. Я разработал свой JS фреймворк под свой инструмент, правда части его модулей могут использоваться и отдельно.
Код такой же как и в самом движке, чёткий и лаконичный, при необходимости подключаются нужные модули, функции.
Например пользователь в структуре указывает что нужен модуль для озвучивания текста. Движок подключает этот скрипт модуля, тот в свою очередь подключает другие, для работы с тегами, спрайт(перемещающий объект) в котором тулбар для настройки озвучивания.
Или например пользовательский интерфейс. Пользователю не надо знать ни команды jQuery, Angular, React, Vue писать самому код чтобы настроить, а просто указать атрибут data-ui="click:classes:elem:colorred" описание пользовательского интерфейса с примерами будет в документации
<a data-ui="click:classes:elem:colorred">Поменять цвет на красный</a>
При клике элементу elem добавится класс colorred. Есть и другие события для взаимодействия с пользователем, это я описал самое простое.
И всё работает как часики 😀
Это ж пустяковое дело, конечно сам напишу, будет лаконично и чётко в одном файле, а не куче разных либ как у вас..
Ресайзинг картинок делается за несколько минут, да у меня уже есть свой класс для этого, водяные знаки раньше делал сейчас для нового движка тоже при необходимости сделаю.
Сам и никак иначе. И тех разработчиков кто будут со мной работать обучу принципам программирования под мой фреймворк.
Это решается довольно просто. У меня нет шаблонизации к которой вы привыкли, у меня просто указывается что нужно разместить на странице и движок всё формирует. Для логистики прав, можно создать сущность где указаны у какой должности какие права. Затем в структуре страницы подключается эта сущность и в зависимости от должности пользователя прописывать что он может делать в самой структуре или вызовом методов узла который будет формировать содержание.
Сначала немного теории по моему движку.
В движке две основные директории mods(модули) и node(узлы).
Модулями я называю части сайта блог, форум, магазин и др. структуры страниц, бизнес-логика в поддиректории могут быть медиафайлы, картинки, видео и др.
Узлы - это в вашем понимании типа плагина, связка php класса, компоненты (макетов разметки, стилей к этой разметке, JS скрипты если нужны).
В структуре прописывается что нужно разместить на странице и движок всё собирает, я уже об этом говорил.
Теперь отвечу на вопрос. У меня есть несколько классов: для базы данных, драйвер сущности, подключения узлов, компонентов, функций, переменных. Для апи например не нужно таскать все классы поэтому можно подключить что нужно подготовить данные и отдать результат. Движку же в любой момент нужен доступ к какому-то узлу, компоненту, выполнения функции, доступ к данным которые в переменных. Поэтому есть класс грузовик который подключает эти классы. И когда узлу нужен доступ к другому узлу, например разметку компонента, данные и тд. через этот класс грузовика это можно получить.
BuxarNET, Пока на дачу ещё не уехал, скажу ещё кое-что. Я редко даю советы, но понимаю ваше намерение иметь хороший, удобный инструмент для своих проектов, скажу вам вот что. У вас есть 3 пути:
С какой целью интересуетесь? Простое любопытство? Хотите стать таким же разработчиком? Или хотите иметь такой инструмент на котором делать свои проекты?
Если хотите быть разработчиком, делать свои проекты на таком инструменте я вам так же предлагаю пообщаться в скайпе, пишите в личку.