如何在Yii应用程序的任何位置调用这些库函数?我有一个图书馆:
#mylib.php
<?php
class MyLib {
public function foo()
{
echo "hello!";
}
}
并希望能够在我的Yii应用程序中调用此功能:
MyLib::foo();
我不知道在哪里放置我的图书馆或如何/在哪里导入它。这只是我正在尝试做的一个例子,但我正在尝试创建一个具有多个名称空间的库,以便我可以访问该库并在导入后访问所有名称空间。
答案 0 :(得分:17)
有几种方法。
注册库的自动加载器:
// Enable Zend autoloader
spl_autoload_unregister(array('YiiBase', 'autoload')); // Disable Yii autoloader
Yii::import('site.common.lib.*'); // Add Zend library to include_path
Yii::import('site.common.lib.Zend.Loader.Autoloader', true); // Require Zend autoloader
spl_autoload_register(array('Zend_Loader_Autoloader', 'autoload')); // Register Zend autoloader
spl_autoload_register(array('YiiBase', 'autoload')); // Register Yii autoloader
将库添加到config / main.php中的导入部分:
return array(
// Autoloading
'import' => array(
'application.lib.*',
'application.components.*',
'site.common.extentions.YiiMongoDbSuite.*',
),
);
在应用程序的任何位置自动加载:
Yii::import('application.lib.*');
答案 1 :(得分:4)
将您的库放在vendors文件夹中(在受保护的文件夹下) 假设(所有类都在MyLib文件夹中) 你喜欢这样:
Yii::import('application.vendors.MyLib.*');
答案 2 :(得分:2)
答案 3 :(得分:1)
我使用Yii自己的自动加载器;
//include auto loader class of vendor
require dirname(__FILE__).'/mollie-api-php/src/Mollie/API/Autoloader.php';
//Now register vendor autoloader class to Yii autoloader
Yii::registerAutoloader(array('Mollie_API_Autoloader','autoload'));