Топ 7. Скрытые возможности DevelNext

Итак, в этой статье мы расскажем о 7 скрытых возможностях DevelNext.

1. Копирование компонентов в txt

Вы когда-нибудь пробовали скопировать компонент в DevelNext и вставить его в текстовый файл или в сообщение на форуме? Если нет, то попробуйте. Перед вами возникнет XML код (похожий на HTML), внутри которого будет вся информация о скопированном компоненте и даже код его событий. Но это еще не все, если вы сохраните этот код в txt файл, а потом, когда-нибудь скопируете текст из этого файла, то легко сможете вставить этот текст как компонент в среде DevelNext.


2. Свой текст приветствия

Когда запускается DevelNext, то он приветствует какой-то фразой, цитатой или шуткой. В базе есть около 100 таких приветствий, но если вам хочется чего-то новенького, вы можете легко добавить свои, делается это просто. Открываете файл /languages/ru/tips  в директории DevelNext с помощью любого текстового редактора и добавляете в конец свою фразу-приветствие. Учтите, что пустые строки игнорируются.


3. Закрытие Splash заставки

В опциях к проекту вы можете добавить свою splash заставку в виде картинки, которая будет запускаться при старте проекта, еще до полной загрузки приложения. Однако, если вам необходимо показывать заставку вплоть до ваших каких-то условий, а не закрывать сразу, вы делаете следующее:

  1. Отключаете опцию “Автоматически скрывать заставку после старта”.
  2. В коде своего условия, пишите закрытие splash заставки:
1
app()->hideSplash();

4. Песочница для кода

Вот здесь, возможно не все поймут, для чего это нужно. Все дело в том, что в JPHP есть возможность выполнять код в песочнице, в изолированном режиме. В этом режиме из кода нет доступа к классам и функциям, которые были объявлены программистом ранее, а код выполняется как бы в чистом окружении, все с чистого листа. Это похоже на расширение runkit из оригинального php, только все работает из коробки и отлично поддерживается. А теперь, покажем – как это делать в коде:

1
2
3
4
5
6
// создаем конкурентное окружение, для поддержки многопоточности
$env = new Environment(null, Environment::CONCURRENT);
$env->execute(function () {
// код выполняется в изолированной системе, классы объявленные ранее - недоступны.
// все с чистого листа.
});

Такой режим выполнения может пригодиться, если вы хотите добавить скриптовую систему в свою программу или игру. Для безопасности, скриптовая система должна быть изолирована от кода приложения и выполняться отдельно. Вот вам и пригодится волшебный класс Environment. Кроме того, он многое умеет – импортировать и экспортировать классы/константы/функции из других окружений или в текущее окружение. И да, кстати, ваш код тоже выполняется в каком-то окружении Environment, его легко получить через специальный метод current():

1
2
// текущее окружение.
$env = Environment::current();

5. Скрытые поведения

Мы о поведениях для компонентов, о конкретных вещах. Многие и не догадываются, что есть такие поведения, которые недоступны в стандартном наборе, а появляются только для специальных типов компонентов. Иными словами, если поведение поддерживается только определенным типом компонентов, то только у них оно будет отображаться. Среди таких поведений есть, например,  Ограничение ввода символов – у текстовых полей для ввода. Не забывайте также, что после добавления пакета расширений 2D Game, появляется целый набор новых поведений во вкладке “Игра”. Тоже самое может происходить и при добавлении сторонних пакетов, если они реализуют новые поведения.


6. Хранение данных в компонентах

Иногда возникает необходимость хранить внутри компонента какие-то дополнительные данные, для какой-то дополнительной логики. Если вы начинающий, то поверьте на слово, возможность хранить данные связанные с конкретным компонентом – это очень удобно для многих случаев. Программисты на JS очень хорошо знают про data-атрибуты или метод data() из jQuery, все это применяется там для тех же целей.

В DevelNext у абсолютно всех компонентов, даже модульных, есть метод data(), он универсален, может как записывать данные, так и читать, похож на метод data() из jQuery:

1
2
3
4
5
// записываем данные.
$this->button->data("my-super-secret-data", "123456");

// читаем данные компонента в переменную.
$mySuperSecretData = $this->button->data("my-super-secret-data");

7. Скрытый HTML редактор


В DevelNext есть один интересный компонент, визуальный редактор html, однако, его нет на палитре компонентов в редакторе форм. Не добавлен он по одной причине – плохая поддержка кастомизации, т.е. авторы компонента совсем не предусмотрели гибкую настройку компонента, то какие кнопки показывать/скрывать, нет возможности добавить новый функционал. В итоге проще было бы написать свой компонент, нежели использовать этот. Но он все равно присутствует в ядре и его можно использовать, если вас все устраивает. Создать его можно с помощью кода, например, в событии появления формы:

1
2
3
4
5
6
7
8
9
10
11
/**
* @event show
*/

function doShow(UXWindowEvent $e = null)
{
$editor = new UXHtmlEditor();
$editor->id = 'htmlEditor';
$editor->size = $this->layout->size;
$editor->anchors = ['left' => true, 'top' => true, 'right' => true, 'bottom' => true];
$this->add($editor);
}

Получить итоговый html текст, того что пользователь наредактировал в компоненте, можно через свойство htmlText:

1
$htmlText = $editor->htmlText;
Дмитрий Зайцев

View Comments

Share
Published by
Дмитрий Зайцев

Recent Posts

Изолированные окружения в JPHP

После статьи про скрытые возможности DevelNext, многим стал интересен специальный класс Environment, который позволяет создавать изолированные или частично изолированные окружения…

6 лет ago

7 способов сделать таймер в DevelNext и JPHP

Таймеры штука интересная и очень полезная в разработке. Если вы работали только с серверным php, то скорее всего, таймеры вам…

6 лет ago

Кто он, автор DevelNext и DevelStudio?

Возможно, писать о себе в третьем лице не очень хорошо, но лучше заголовка для этой статьи я не придумал. Сегодня…

6 лет ago

Осенний DevelNext 16.7.0 уже доступен!

Представляем вам осеннюю версию DevelNext 16.7.0, с поддержкой возможностей из PHP 7, менеджером скинов и новыми компонентами в стиле Material…

7 лет ago

Встречайте летний DevelNext 16.6.0

Сегодня у нас отличные новости, встречайте новый летний DevelNext 16.6.0! Мы постарались сделать его еще более дружелюбным для новичков, постарались…

7 лет ago

Встречайте DevelNext 16.5.2

Сегодня у нас отличные новости, встречайте новый DevelNext 16.5.2! DevelNext это теперь по праву целая студия, а не просто конструктор,…

7 лет ago