Framework foton
Инструмент для профессиональной разработки web приложений

toObj($arr) – преобразует массив в обьект и выведет его в результат метода

maskObj($arr) – превращает массив в многоуровневые объекты.

$arr - массив

сначала подключаем 

use Foton\Module\Obj;

Затем создаем объект 

$obj= new Obj();

Заранее создаем метод в контроллере mvc html

public function myMethod($text){  return $text.'-test'; }

Пример структуры массива:

<?php
$arr = array(
	'::test#test'=>
		array('var'=>
			array(5,7),
			'method'=>array(
				'Controller\Site\html::myMethod#test2'=>array(
					'var'=>['my string']
				)
			)
		)
);

Теперь вызываем:

<?php
FotonArr($obj->maskObj($arr));

результат:

Array
(
    [test_test] => 29
    [myMethod] => my string-test
)

Разберем массив - ::test#test — так как в начале ::, то будет выполнен поиск метода ядра, если бы не было :: была бы вызвана функция php библиотеки. Например мы могли бы написать str_replace,
на уровень ниже мы указали Controller\Site\html::myMethod – и у нас подключился метод класса  Controller\Site\html,
класс должен быть динамическим.
#test и #test2 – это комментарий к методу, если будут объявлены два одинаковых метода, то результаты перезапишутся, чтобы этого не произошло мы добавляем префикс. 
Значением этого ключа, как и всех других в этом многомерном массиве является массив из двух ключей:
var — массив сигнатур метода,
method – массив из новых методов, который состоит также из ключа — метода и значения массива var=>array(),method=>array() и т. д.
Для использования результата предыдущего метода, как значения сигнатуры следующего в массиве var в ключе необходимо указать название метода заменив # на _,
а также, если есть класс метода, то и его указываем в начале, вот так вот, например  Controller\Test_test, в значении укажем любое значение, обычно 1.
Значение результата метода изменяются каскадно, поэтому их можно использовать несколько раз.
Например такой массив:

<?php
$arr = array(
	'::test#test'=>
	array(
		'var'=>array(5,7),
		'method'=>array(
			'Controller\Site\html::myMethod#test2'=>array(
				'var'=>['my string']
			),
			'::test#test3'=>array(
				'var'=>['test_test'=>1,12]
			)
		)
	)
);

выдаст после обработки:

Array
(
    [test_test] => 29
    [myMethod_test2] => my string-test
    [test_test3] => 58
);

Как мы видим test_test3 = 58, это результат значения метода $this→core→test с аргументами array(5,7) и числа 12, мы повторно запустили тот же метод но уже с другими значениями аргументов
Если же мы запустим

<?php
$arr = array(
	'::test#test'=>
	array(
		'var'=>array(5,7),
		'method'=>array(
			'Controller\Site\html::myMethod#test2'=>array(
				'var'=>['my string']
			),
			'Controller\Site\html::myMethod#test3'=>array(
				'var'=>['myMethod_test2'=>1]
			)
		)
	)
);

то получим:

Array
(
    [test_test] => 29
    [myMethod_test2] => my string-test
    [myMethod_test3] => my string-test-test
);

Теперь у нас 2 раза отработает метод  myMethod

maskToObj($arr) — метод аналогичный maskObj($arr) только результатом будет не массив,а объект.

dumpObj($arr, $obj = null) — метод является оберткой над всеми тремя методами.
Если в аргументе $obj указать  O будет вызван метод maskToObj($arr),
если A maskObj($arr),
если же мы ничего не укажем у нас вызовется метод toObj(maskObj($arr)) — в результате мы получим обьект со всеми результатами в свойствах корневого обьекта на одном уровне

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

© Copyright 2026 Разработано на Framework Foton
Продукт зарегистрирован в Роспатенте