gpt4 book ai didi

php - 将自定义供应商库添加到 Symfony2 自动加载

转载 作者:可可西里 更新时间:2023-11-01 12:30:54 25 4
gpt4 key购买 nike

我已经尝试了几个小时了 - 我似乎找不到任何有效的帖子。我正在将自定义 php 类添加到 Symfony2 供应商目录。

例如(复制其他供应商结构):

vendor/mylib/mylib/src/Mylib/Lib/Class.php

然后我通过添加更新根 composer.json:

"require": {
"mylib/mylib": "@dev"
},

我还在 vendor/mylib/mylib 中创建了一个 composer.json,其中包含:

{
"name": "mylib/mylib",
"type": "library",
"description": "My Libraty",
"keywords": ["library"],
"autoload": {
"psr-0": { "Mylib\\": "src/" }
},
"minimum-stability": "dev"
}

我在 Class.php 中添加了一个命名空间:

namespace MyLib\Lib;

在我的一个包中,我添加了以下内容:

use MyLib\Lib\ClassName as ClassName;
class Cms extends ClassName
{}

我得到的错误是:

FatalErrorException: Error: Class 'MyLib\Lib\MyClass' not found in C:\xampp\htdocs\My_CMS\src\Cms\CmsBundle\Entity\Cms.php line 13

我做错了什么?

最佳答案

你真的应该使用服务容器,这基本上是 symfony 加载类的方式。

原因如下:

  1. 也就是说,只有在需要时才会构建服务。
  2. 代码重用的最佳实践。
  3. 分离应用程序中的每项功能。
  4. 由于每项服务只做一项工作,您可以轻松访问每项服务随时随地提供服务并使用其功能。
  5. 还可以更轻松地测试和配置每项服务,因为它与应用程序中的其他功能分开。
  6. 这个想法被称为面向服务的架构,并不是独一无二的到 Symfony 甚至 PHP。

http://symfony.com/doc/current/book/service_container.html

A Service Container (or dependency injection container) is simply a PHP object that manages the instantiation of services (i.e. objects).

所以基本上 symfony 会在你的 Controller 中为你处理类的实例化。您只需执行以下操作:

在名为 Libraries 的路径下添加一个文件夹 --> src/AppBundle/Libraries

将类添加到此文件夹,顶部有一个命名空间。我的例子是:

    <?php

namespace AppBundle\Libraries;

class MyRecommendations{


public function __construct(){

}

public function init(){
die("init");
}


}

然后将名为 services.yml 的文件添加到您的应用程序。应用程序/配置/服务.yml

把下面的代码放在里面不要在yml文件中使用tabbing

services:
myrecommendations:
class: AppBundle\Libraries\MyRecommendations
#arguments: [specialparamhere] #constructor parameters here

然后在你的config.yml文件中添加第三行resources: services.yml

imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }

在使用时在 Controller 的顶部添加 use 语句

use AppBundle\Libraries\MyRecommendations;

现在调用你的代码

$test = $this->get('myrecommendations');
$test->init();

echo 消失了

init

关于php - 将自定义供应商库添加到 Symfony2 自动加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18434238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com