Создание указателей
О том, как создавать указатели на объекты, статичные классы и делегаты
VoidCore::createObject
int VoidCore::createObject (string $objectName[, mixed $objectGroup = false[, ...$args]]) — создание .NET объекта
Аргумент
Описание
string $objectName
Класс .NET объекта для создания (к примеру, System.Windows.Forms.Form)
mixed $objectGroup = false
Сборка класса (к примеру, System.Windows.Forms)
...$args
Список аргументов для конструктора объекта
По умолчанию сборка создаваемого объекта равна false. Это означает, что VoidCore сам попытается найти подходящую сборку для объекта. Вы так же можете указать собственную сборку
Пример:
<?php
# Самый простой способ создать объект
$object1 = VoidCore::createObject ('System.Windows.Forms.Form');
# Тоже самое что и выше, но с лишними телодвижениями
$object2 = VoidCore::createObject ('System.Windows.Forms.Form', false);
# А эти способы выдадут ошибку т.к. данный класс не входит
# ни в сборку VoidCore, ни в сборку mscorlib
$object3 = VoidCore::createObject ('System.Windows.Forms.Form', true);
$object4 = VoidCore::createObject ('System.Windows.Forms.Form', null);
$object5 = VoidCore::createObject ('System.Windows.Forms.Form', '');
# Создание объекта с указанием его сборки
$object6 = VoidCore::createObject ('System.Windows.Forms.Form', 'System.Windows.Forms');
VoidCore::getClass
int VoidCore::getClass (string $className[, mixed $classGroup = false]) — создание указателя для работы со статичным .NET классом
Аргумент
Описание
string $className
Полное название .NET класса
mixed $classGroup = false
Сборка класса
Пример:
<?php
$class = VoidCore::getClass ('System.Windows.Forms.MessageBox');
VoidCore::createDelegate
int VoidCore::createDelegate (string $type, callable $function) — создание анонимной функции (делегата)
Аргумент
Описание
string $type
Тип делегата (полный .NET класс)
callable $function
PHP коллбэк для выполнения
Пример:
<?php
$delegate = VoidCore::createDelegate ('System.Func`2[System.Int32, System.String]', function ($number)
{
return 'The number is '. $number;
});
# Выведет сообщение "The number is 228"
# Метод callMethod см. в "Управление указателями"
echo VoidCore::callMethod ($delegate, 'Invoke', 228);
VoidCore::typeof
int VoidCore::typeof (string $objectName[, mixed $objectGroup = false]) — создание экземпляра типа объекта
Аргумент
Описание
string $objectName
Полный .NET класс объекта
mixed $objectGroup = false
Сборка объекта
Пример:
<?php
$type = VoidCore::typeof ('System.Windows.Forms.Button');
# Выведет "System.Windows.Forms.Button"
# Метод callMethod см. в "Управление указателями"
echo VoidCore::callMethod ($type, 'ToString');
VoidCore::importObject
int VoidCore::importObject (string $data) — импорт объекта в ядро
Аргумент
Описание
string $data
Сериализированные данные ядра
VoidCore::exportObject
string VoidCore::exportObject (int $selector) — экспорт объекта из ядра
Аргумент
Описание
int $selector
Указатель объекта
Примеры для импорта и экспорта объектов:
<?php
# Создаём список строк
$list = VoidCore::createObject ('System.Collections.Generic.List`1[System.String]');
# Добавляем 3 элемента
# Метод callMethod см. в "Управление указателями"
VoidCore::callMethod ($list, 'Add', 'a');
VoidCore::callMethod ($list, 'Add', 'b');
VoidCore::callMethod ($list, 'Add', 'c');
# Экспортируем список в строку (base64 строку)
$export = VoidCore::exportObject ($list);
# Удаляем оригинальный объект
# Метод removeObjects см. в "Управление указателями"
VoidCore::removeObjects ($list);
# Импортируем список из строки
$list = VoidCore::importObject ($export);
# Выводим второй элемент импортированного списка ("b")
# Метод getArrayValue см. в "Работа с массивами"
echo VoidCore::getArrayValue ($list, 1);
VoidCore::createThread
int VoidCore::createThread (callable $callback, ...$args) — создание .NET потока для анонимной функции
Аргумент
Описание
callable $callback
PHP коллбэк для выполнения в потоке
...$args
Аргументы коллбэка
Пример:
<?php
# Создаём поток
$thread = VoidCore::createThread (function ()
{
# В потоке создаём класс test
class test
{
# Добавим классу статичную переменную
static $example = '123';
}
});
# Метод callMethod см. в "Управление указателями"
VoidCore::callMethod ($thread, 'Start'); // Запустим поток
VoidCore::callMethod ($thread, 'Join'); // Объединим память потока с памятью главного потока
echo test::$example; // Выведет "123"
Last updated
Was this helpful?