Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Symfony2和x27中;s";组件->;PSR-0类加载器“;节正在编辑哪些文件?_Php_Symfony_Psr 0 - Fatal编程技术网

Php 在Symfony2和x27中;s";组件->;PSR-0类加载器“;节正在编辑哪些文件?

Php 在Symfony2和x27中;s";组件->;PSR-0类加载器“;节正在编辑哪些文件?,php,symfony,psr-0,Php,Symfony,Psr 0,我正试图掌握如何在我的Symfony2项目中包含一个支持PSR-0的外部库。 在“PSR-0类加载器”页面中(此处:) 正在编辑哪个文件?如果是app/autoloader.php,则我的文件与显示的文件不同: use Doctrine\Common\Annotations\AnnotationRegistry; use Composer\Autoload\ClassLoader; /** * @var $loader ClassLoader */ $loader = require __D

我正试图掌握如何在我的Symfony2项目中包含一个支持PSR-0的外部库。 在“PSR-0类加载器”页面中(此处:)

正在编辑哪个文件?如果是app/autoloader.php,则我的文件与显示的文件不同:

use Doctrine\Common\Annotations\AnnotationRegistry;
use Composer\Autoload\ClassLoader;
/**
 * @var $loader ClassLoader
 */
$loader = require __DIR__.'/../vendor/autoload.php';
AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
return $loader;
我是否必须在返回之前包含此代码?或者它应该在调用的其他文件中?如果它是app/autoload.php,此代码不应该:

// register several namespaces at once
$loader->addPrefixes(array(
    'Symfony' => __DIR__.'/../vendor/symfony/symfony/src',
    'Monolog' => __DIR__.'/../vendor/monolog/monolog/src',
));

是addNamespaces吗?一旦我成功声明了这个库,我该如何使用它?

是的,请注意app/autoload.php文件获取了从vendor/autoload.php返回的$loader实例。因此,您链接的文档给出了一个示例,其中您可以显式地创建一个新实例,但实际上是使用app/autoload.php,实例已准备就绪,正在等待您

关于创建一个新的库集,假设我想创建一个名为“MyLibrary”的新库,它将位于src目录中,之后:

$loader=require\uuuuu DIR\uuuu./../vendor/autoload.php';

我谨声明如下:

$loader->addPrefix('MyLibrary',\uuuu DIR\uuuu./../src');

现在我想:

$cd src

$mkdir MyLibrary

$mkdir MyLibrary/Component

$mkdir MyLibrary/Component/SomeClasses

$vim MyLibrary/Component/SomeClasses/MyClass.php

MyClass.php:

<?php

    namespace MyLibrary\Component\SomeClasses;

    class MyClass
    {
        ...
    }

首先,感谢您的回答。让我们了解一下我混淆的一些概念。但问题是,我不是在创建库。我正在合并一个现有的库。这个库开发了一个自动加载类aready。因此,我想做的是与普通php行require_once'../classes/PHPASN_Autolo相当的Symfonyphp';PHPASN_Autoloader::register();那么我如何将Symfony指向这个自动加载类呢?我应该只将名称空间指向自动加载类的dir吗?这不是我需要做的事情,所以我只能猜测。我的第一个问题是,这个库是否可以通过composer下载,composer会自动将它直接放在供应商中,并且在您的网站中全局可用您的项目。如果失败,您可以尝试将库导入供应商目录,并在特定的php文件中放置require_once。我尝试将库放入我正在使用的类的子文件夹中,然后添加以下行:require_once'phpasn1/PHPASN_Autoloader.php';use phpasn1\PHPASN_Autoloader;require_once'phpasn1/PHPASN_Autoloader.php';使用PHPASN1\PHPASN_Autoloader;PHPASN_Autoloader::Autoloader::register('.');并得到一个“Parse:syntax error,unexpected T_PAAMAYIM_NEKUDOTAYIM”错误。可能这太复杂了,我道歉。假设您有MyFile.php,并且在该文件中,您想使用库,请在MyFile.php中尝试以下操作:
<?php

...

use MyLibrary\Component\SomeClasses\MyClass;

$myClass = new MyClass();