Php Phalcon找不到类
大家好,我正在尝试加载多个库,这些库位于使用名称空间的库文件夹中的不同文件夹中,但始终找不到 我的目录结构是这样的Php Phalcon找不到类,php,namespaces,phalcon,phalcon-routing,Php,Namespaces,Phalcon,Phalcon Routing,大家好,我正在尝试加载多个库,这些库位于使用名称空间的库文件夹中的不同文件夹中,但始终找不到 我的目录结构是这样的 app/ controllers/ models/ library/ views/ $loader = new \Phalcon\Loader(); /** * We're a registering a set of directories taken from the configuration file */ $loader-&
app/
controllers/
models/
library/
views/
$loader = new \Phalcon\Loader();
/**
* We're a registering a set of directories taken from the configuration file
*/
$loader->registerNamespaces(array(
'Test\Name' => __DIR__ . "/../library/",
));
$loader->registerDirs(
array(
$config->application->controllersDir,
$config->application->modelsDir
)
)->register();
$var = new Test\Name\functions();
class functions extends Phalcon\Mvc\User\Component
{
public function __construct()
{
}
public function initialize()
{
}
public function checking(){
echo 'checks';
}
}
我的loader.php是这样的
app/
controllers/
models/
library/
views/
$loader = new \Phalcon\Loader();
/**
* We're a registering a set of directories taken from the configuration file
*/
$loader->registerNamespaces(array(
'Test\Name' => __DIR__ . "/../library/",
));
$loader->registerDirs(
array(
$config->application->controllersDir,
$config->application->modelsDir
)
)->register();
$var = new Test\Name\functions();
class functions extends Phalcon\Mvc\User\Component
{
public function __construct()
{
}
public function initialize()
{
}
public function checking(){
echo 'checks';
}
}
我的basecontroller正试图这样呼叫
app/
controllers/
models/
library/
views/
$loader = new \Phalcon\Loader();
/**
* We're a registering a set of directories taken from the configuration file
*/
$loader->registerNamespaces(array(
'Test\Name' => __DIR__ . "/../library/",
));
$loader->registerDirs(
array(
$config->application->controllersDir,
$config->application->modelsDir
)
)->register();
$var = new Test\Name\functions();
class functions extends Phalcon\Mvc\User\Component
{
public function __construct()
{
}
public function initialize()
{
}
public function checking(){
echo 'checks';
}
}
顺便说一句,库中的文件函数是这样的
app/
controllers/
models/
library/
views/
$loader = new \Phalcon\Loader();
/**
* We're a registering a set of directories taken from the configuration file
*/
$loader->registerNamespaces(array(
'Test\Name' => __DIR__ . "/../library/",
));
$loader->registerDirs(
array(
$config->application->controllersDir,
$config->application->modelsDir
)
)->register();
$var = new Test\Name\functions();
class functions extends Phalcon\Mvc\User\Component
{
public function __construct()
{
}
public function initialize()
{
}
public function checking(){
echo 'checks';
}
}
我一直在
Fatal error: Class 'Test\Name\functions' not found in C:\wamp\www\app\controllers\ControllerBase.php on line 38
非常感谢您的帮助。我认为您的班级应该:
namespace Test\Name;
class functions extends Phalcon\Mvc\User\Component
{
// ... rest of it
在上面
我还将进行以下配置:
$loader->registerDirs(
array(
$config->application->controllersDir,
$config->application->modelsDir,
__DIR__ . "/../library/",
)
)->register();
因此,您的类将位于(我也会将您的类重命名为Functions:
app/library/Test/Name/Functions.php
因此很明显,您的
函数
类位于Test\Name
名称空间中。很难找到让我陷入其中的讨论,但我的理解是,在使用名称空间时,您使用名称空间。在使用目录和其他规则时,您不使用名称空间
名称空间速度更快,因此最好还是坚持使用它们,去掉registerDirs
,因为它们是多余的,与名称空间的含义相同:
library\Test\Name.php
变成:
$loader->registerNamespaces(array(
'Apps\Module\Controllers' => $config->application->controllersDir,
'Apps\Module\Models' => $config->application->modelsDir,
'Test' => __DIR__ . "/../library/Test",
));
然后作为Test\Name
提供
$loader->registerNamespaces(array(
'App' => __DIR__ . "/../library/",
), true);
它将合并所有子目录,如果你像这样库目录架构
app/
controllers/
models/
library/
views/
$loader = new \Phalcon\Loader();
/**
* We're a registering a set of directories taken from the configuration file
*/
$loader->registerNamespaces(array(
'Test\Name' => __DIR__ . "/../library/",
));
$loader->registerDirs(
array(
$config->application->controllersDir,
$config->application->modelsDir
)
)->register();
$var = new Test\Name\functions();
class functions extends Phalcon\Mvc\User\Component
{
public function __construct()
{
}
public function initialize()
{
}
public function checking(){
echo 'checks';
}
}
图书馆
-试验
-Name.php
您可以调用new\App\Test\Name()