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

Внутренние модули хранятся в директории /modules/
Обращение к внутренним модулям происходит через
use Modules\Название модуля
или $this→core→obj(«Название модуля»);
Если контроллер содержит сигнатуру
$this→core→obj(«Название модуля»,[сигнатура контроллера]);
Для создания модуля необходимо создать файл по названию вашего модуля с расширением php в корне указанной ранее директории и объявить в нем класс по названию вашего модуля, например:
mymodule.php

<?
namespace Modules;
class mymodule{
	public function test(){
		return 'test';
	}
}
?>

Тогда обращение будет выглядеть вот так:
$this→core→obj(«Название модуля»)->test();
Так как часто при создании большого модуля бывает необходимо обращение к другим модулям, либо разбиение на несколько классов система предусматривает создание такой сложной структуры.
Хорошим тоном считается именно такое создание внутреннего модуля:
Файл mymodule.php из предыдущего примера является контроллером, хотя и может принимать аргументы методов.
Методы этого контроллера в связи с теми или иными условиями, вызванными пользователем или же самой системой обращаются к методам других классов этого или же другого модуля.
Для этого создаем директорию по названию нашего модуля на одном уровне с нашим файлом модуля (такая практика является хорошим тоном, так как облегчает поиски при анализе вашего модуля).
mymodule/

class1.php

<?
namespace Modules\mymodule;
class class1{
	public function test($return){
		return $return;
	}
}
?>

class2.php

<?
namespace Modules\mymodule;
class class2{
	public function test($return){
		return $return;
	}
}
?>

Мы создали 2 файла, как видим названия классов также соответствуют названию файлов. 
Первый класс как мы видим наследуется от ядра, давайте теперь создадим внутри директории mymodule директорию custom/mymodule/custom/class1.php
Как мы видим название данного файла и соответственно класс совпадают, но благодаря namespace мы можем обращаться к обоим классам в одном файле.

<?
namespace Modules\mymodule\custom;
class class1{
	public function test($return){
		return $return;
	}
}
?>



Теперь свяжем все классы между собой
mymodule.php

<?
namespace Modules;
use Modules\mymodule\Class1;
use Modules\mymodule\Class2;
use Modules\mymodule\custom;
class mymodule{
	private $class1,$class2;
	public function __construct(){
 		$this->class1 = new Class1();
		$this→class2 = new Class2();
 	}
 	public function test($class,$return){
 		if($class==1){
 			return $this->class1->test($return);
 		}
 		else if($class==2){
 			return  $this->class2->test($return);
 		}
 		else{
			$custom = new custom\Class1;
			return  $custom->test($return);
		}
	}
}
?>

Для упрощения namespace большой вложенности можно использовать фасады, для этого достаточно поместить в файл /modules/facade.ini (если этого файла нет, вы можете создать его самостоятельно)
строчку, например:
custom=mymodule/custom/class1
После этого в файле mymodule.php
можно писать
$custom = $this->core->obj('custom');
© Copyright 2026 Разработано на Framework Foton
Продукт зарегистрирован в Роспатенте