Всем привет.
Решил переписать с использованием namespace, вышла проблема.
Как использовать RedBeanPHP внутри namespace, если он подключен через require.
Структура
/Controllers
RootController.php
GetController.php
...
/includes
/Interfaces
ControllerInterface.php
/Traits
ControllerTrait.php
db.php
/Libs
/rb
rb.php
<b>index.php</b>
index.php
<?php
require_once './Includes/db.php';
require_once './autoload.php';
use API\Controllers\RootController;
$request = $_REQUEST['request'];
$controller = new RootController();
$response = $controller->execute_request($request);
echo "$response";
?>
RootController подключает другие контроллеры(get, add, edit, delete)
<?php
namespace API\Controllers;
require_once $_SERVER['DOCUMENT_ROOT'].'/API/Includes/db.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/API/autoload.php';
use API\Includes\Interfaces\ControllerInterface;
use API\Includes\Traits\ControllerTrait;
class RootController implements ControllerInterface{
use ControllerTrait;
// ...
}
?>
Сейчас проблема возникает при попытке использовать RedBeanPHP(R) в ControllerTrait.
В какое пространство имён попадёт подключаемый RedBeanPHP
// ControllerTrait
namespace API\Includes\Traits;
trait ControllerTrait{
private $dependences = [];
private $objects = [];
private function set_dependences(){
$this->dependences = R::findAll('dependences');
}
private function get_dependences($json = true){
if ( count($this->dependences) === 0 ) $this->set_dependences();
return $json ? json_encode($this->dependences) : $this->dependences;
}
private function set_objects(){
foreach ( $this->get_dependences($json = false) as $value ) {
$this->objects[ $value->id ] = R::findAll($value->type.'s');
}
}
private function get_objects($json = true){
if ( count($this->objects) === 0 ) $this->set_objects();
return $json ? json_encode($this->objects) : $this->objects;
}
}
Пробовал использовать
\R::findAll(), но php не распознаёт и пытается подключить файл(
Model_Dependences) с использованием autoload-ера