/vendor/library
我在文件夹中存储了第三方 php 库。现在我需要将它导入我的 Zend 应用程序并在控制器操作中使用它。
require_once ('/vendor/library/client.php');
这个对吗 ?还是有其他方法来处理这个?
/vendor/library
我在文件夹中存储了第三方 php 库。现在我需要将它导入我的 Zend 应用程序并在控制器操作中使用它。
require_once ('/vendor/library/client.php');
这个对吗 ?还是有其他方法来处理这个?
添加 3rd 方库的正确方法是使用 Composer。
例如。如果您希望将ZfcUser添加到 Zend Framework 2 应用程序,请使用以下命令:
composer require zf-commons/zfc-user:dev-master
这将从 github 下载代码,您只需将模块名称添加到您的: /config/application.config.php
。
如果您的 3rd 方库未准备好 Composer,您可以通过为其创建模块将其添加到 Zend Framework 2 实例中。
步骤1
/vendor/MyModule/Module.php
<?php
namespace MyModule;
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
class Module implements AutoloaderProviderInterface
{
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
}
这基本上提供了一种方法,您可以在名为的文件中注册您的 3rd 方代码autoload_classmap.php
:
第2步
/vendor/MyModule/autoload_classmap.php
<?php
return array(
'MyModule\VendorLibrary' => __DIR__ . '/src/MyModule/VendorLibrary.php',
);
第 3 步
您的第 3 方代码应位于:
/vendor/MyModule/src/MyModule/VendorLibrary.php
并且可以读到这样的东西:
<?php
namespace MyModule;
class VendorLibrary
{
public function sayHi($name)
{
return "Hi there, $name!";
}
// your 3rd party code ...
}
第4步
将您的新模块添加到application.config.php
:
/config/application.config.php
<?php
return array(
'modules' => array(
// your other modules here ...
'MyModule'
),
'module_listener_options' => array(
'config_glob_paths' => array(
'config/autoload/{,*.}{global,local}.php',
),
'module_paths' => array(
'./module',
'./vendor',
),
),
);
在您的控制器中,您现在使用您的供应商类,例如:
$vendor = new \MyModule\VendorLibrary();
$hi = $vendor->sayHi('John');
虽然使用 require_once() 要容易得多,但不建议这样做,因为:
希望这可以帮助!
使用 ZF 自动加载器,然后忘记包含/要求。
http://framework.zend.com/manual/1.12/en/zend.loader.autoloader.html
这意味着尽管你的类名和文件名必须遵循它们的命名约定——这可能比它的价值更麻烦。
但是,如果您正在开发自己的库以在 ZF 中工作,那么这是一个好主意。