DevelNext – Подключение сторонних классов
В DevelNext в качестве ЯП используется JPHP, который, как и обычный PHP, поддерживает пространства имён (namespace) и автоматическое подключение классов.
Корневой считается директория src проекта. Для примера создадим новый проект demoClass:
Если нажать на кнопку Открыть, откроется директория с проектом. В папке src располагаются пользовательские классы, в т.ч. исходники форм и модулей.
Директория src является точкой отсчёта для пространства имён. Файлы пользовательских классов располагаются по пути:
/путь-до-папки-проекта/src/пространство-имён/имя-класса.php
Для использования своего класса в DevelNext, в необходимом месте (форме или модуле) нужно прописать:
use пространство-имён\имя-класса;
В use необходимо использовать обратные слеши \
Например, откроем форму MainForm:
Пространство имён прописано так:
1 |
namespace app\forms; |
Значит, php-код формы MainForm будет располагаться по пути:
…/src/app/forms/MainForm.php
Открываем соответствующую папку и убеждаемся в этом
Создадим какой-нибудь класс. Допустим, нам нужно достать скриншот видео по ссылке youtube, для этого есть необходимый класс, написанный на php.
Создадим папку …/src/thumb/, в неё положим файл youtube.php
Содержимое файла youtube.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<? namespace thumb; // Пространство имён use php\net\URL; use php\lib\Str; // Имя класса class YouTube{ private $url; public function __construct($url){ $this->url = new URL($url); } public function getThumb(){ $q = Str::Replace($this->url->getQuery(), '=', 'i/'); return 'https://i.ytimg.com/'.$q.'/hqdefault.jpg'; } } |
Путь до файла с классом: …/src/thumb/youtube.php
Для использования в другом классе: use thumb\youtube;
Суть программы в том, что в поле edit вводится ссылка на видео, при нажатии на кнопку button с помощью класса youtube получаем скриншот и отображаем его в элементе image.
Создадим нужные визуальные элементы:
Код формы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php namespace app\forms; use thumb\YouTube; //Подключаем наш модуль use action\Element; use php\io\Stream; use php\gui\framework\AbstractForm; use php\gui\event\UXEvent; class MainForm extends AbstractForm { /** * @event button.action */ function doButtonAction(UXEvent $event = null) { // Используем наш класс для получения скриншотов $y = new YouTube($this->edit->text); Element::loadContentAsync($this->image, $y->getThumb()); } } |
Если пути в use прописаны верно, то классы подтянутся автоматически.
Ссылка на демо-проект: http://develnext.org/project/vjWCAeRSos
Вот я хочу поставить гиф на прогресс бар но у меня вот такое выдаёт WARNING: unknown protocol: res
Вах, какие полезные статьи и без выпендрежа по программированию для новичков и не только. Респект!
Спасибо :)
Доброго времени суток! Хочу подключить PHP Exel к проекту, но не получается.
1. Положил файлы в src/phpexel
2. В главный файл, PHPExel.php, добавил
namespace phpexel;
define(‘PHPEXCEL_ROOT’, ‘C:/Users/NewEXE/Desktop/PHPExcel-1.8/Classes’);
pre(\PHPEXCEL_ROOT);
3. в MainForm использовал
use PHPExcel_Autoloader;
use phpexel\PHPExcel;
use PHPExcel;
…и метод
function doButtonClick(UXMouseEvent $event = null)
{
$pexel = new PHPExcel;
}
По нажатию на кнопку выдаёт
Fatal error: Uncaught exception ‘php\lang\IllegalArgumentException’ with message ‘java.lang.IllegalArgumentException: Invalid UUID string: 1483578133284’ in res://app/forms/MainForm.php on line 112, position 16
это явно проблема в скрипте PHPExcel, autoloader тут не при чём
Неплохо! Запили статью о том, как подключать сторонние библиотеки(например .net) к проекту дн
Я еще сам окончательно не разобрался, как это делать
Скажи пожалуйста как сделать смену стилей по кнопке!
Молодец хорошо оформил.
Спасибо :)