PhalconPHP - 全局函数和类

时间:2016-07-05 09:13:03

标签: php project-management phalcon

我想在php中创建我的第一个大型项目。我使用Phalcon PHP,并使用Phalcon Developer Tools创建了项目结构。它类似于:

├── app
│   ├── cache
│   ├── config
│   │   ├── config.php
│   │   ├── loader.php
│   │   └── services.php
│   ├── controllers
│   ├── migrations
│   ├── models
│   └── views
├── index.html
└── public
    ├── css
    ├── files
    ├── img
    ├── index.php
    ├── js
    └── temp

我认为我需要一些全局功能和类。我想将Laravel的dd函数实现为哑变量并使用此函数,如

dd($value); 

无论我想要什么。我还想创建一些全局类来使用他们的静态函数。例如:

User::isLogged()

如何在我的项目中实现这一点?在app /中创建目录函数或lib或indcude?这是一个惯例吗?将全局类放在单个文件夹中?如何分离全局函数和类并在标准Phalcon加载器中注册它们并为整个项目执行一次?

1 个答案:

答案 0 :(得分:3)

Phalcon的好处在于,您可以自由地以最适合您当前情况的方式组织项目。

我在大多数项目中使用的更通用的方法是在自动加载器中注册最常用的命名空间。在我的情况下,我使用多模块结构,这是在给定模块的Module.php文件中完成的。

模块类:

class Module
{
    public function registerAutoloaders($di)
    {
        $config = $di->getConfig();
        $loader = new \Phalcon\Loader();
        $namespaces = [
            'Frontend\Controllers' => __DIR__ . '/controllers/',
            'Frontend\Forms' => __DIR__ . '/forms/',
            'Models' => $config->site->path->common . 'models/',
            'Helpers' => $config->site->path->common . 'helpers/',
        ];
        $loader->registerNamespaces($namespaces);
        $loader->register();
    }
}

在我的案例中,帮助者是不是模型并且用于特定事物的文件。例如,我有一个Files helper,它包含用于操作文件系统的函数。我有一个助手来处理像slugalization,latinization等字符串操作...

我还有一个Lib文件夹,我在其中放置了我的公共库,如PHPMailer,BrowserDetect,ImageProcessing库等。

现在关于全球职能,如Laravel' dd()。我有一个小文件,我包含在bootstrap文件或index.php中。它包含1-2个全局函数,如:

function d($what) 
{
    echo '<pre>';
    print_r($what);
    die('</pre>');
}

在我的情况下,我想要在任何地方轻松使用那么多全局函数,比如上面的一个用于调试。我在上面提到的Helper文件中提供的其他内容。

希望我帮助过,并且很高兴听到别人对此的看法。