ii中的自动加载问题


autoloading issue in Yii

我把password.php文件放在components文件夹中。在phpStorm现有的功能在password.php显示良好(自动完成),但运行时遇到这个:

Fatal error: Call to undefined function password_hash() in . . .'protected'controllers'SiteController.php on line 129

原因是什么?

main.php

...
'import'=>array(
    'application.models.*',
    'application.components.*',
),
...

Yii仅自动加载如果文件名与类名相同,并且类定义文件在导入路径中。对于包含函数包的文件,您必须手动include(或require)。
要包含,您可以使用dirname(__FILE__) (php 5.2)或__DIR__ (php 5.3+)来获取当前文件的路径,然后将相对路径附加到您的文件和文件名。你可以把它放在index.php,像这样:

require_once dirname(__FILE__) . '/../protected/components/password.php';

或更简单,如果你有PHP 5.3+:

require_once __DIR__ . '/../protected/components/password.php';