我移植一个Symfony的1.2项目,Symfony的2.x的 我目前运行最新的2.1.0-dev的释放。
从我的老项目,我有一个类叫做工具,有喜欢的事情改写(munging)数组转换为字符串并从字符串产生蛞蝓一些简单的功能。 我想在我的新项目中使用这个类,但我不清楚如何使用这个类捆绑之外。
我在这里看到不同的答案,其中建议改变应用程序/ autoload.php但我autoload.php看起来在回答各种问题不同,也许事情已经改变了这里2.0和2.1之间。
我想继续我的课,我SRC或应用程序目录,因为他们是源代码控制之下。 我的供应商目录不是我使用作曲家照顾那个。
任何意见将在这里感谢。
对于一个简单的情况下,像这样快捷的解决方案是创建一个文件夹(例如Common
)直属src
,把你的类吧。
src
-- Common
-- Tools.php
Tools.php
包含正确的命名空间类,例如
<?php
namespace Common;
class Tools
{
public static function slugify($string)
{
// ...
}
}
在调用你的函数不要忘了use
的语句
use Common\Tools;
// ...
Tools::slugify('my test string');
如果你把你的代码下src
下正确的文件夹结构和命名空间上面,它会工作不接触app/autoload.php
。
另一种方法是使用/app/config/autoload.php:
<?php
use Doctrine\Common\Annotations\AnnotationRegistry;
$loader = require __DIR__.'/../vendor/autoload.php';
$loader->add( 'YOURNAMESPACE', __DIR__.'/../vendor/YOURVENDOR/src' );
// intl
if (!function_exists('intl_get_error_code')) {
require_once _DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php';
$loader->add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs');
}
AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
return $loader;
只需用值替换YOURNAMESPACE和YOURVENDOR。 工作得很好对我来说,到目前为止。
你是正确的,我在自动加载时的变化跌跌撞撞从2.0到2.1。 上面的代码工作正常使用的最新版本,而我升级我的项目;-)