Symfony和普通php自动加载类

Symfony和普通php自动加载类,php,symfony,Php,Symfony,我有一个旧代码的应用程序-普通php和新代码-Symfony。当在旧的代码调用类symfony autoloader中截取类时,如何告诉symfony调用非常需要的类 我有来自旧代码的app/old/core/classes/Locale.php,没有名称空间和 app/src/AppBundle/Entity/Locale.php根据新代码,这是带有名称空间的实体 在旧代码中,我从旧代码中调用静态函数Locale,但是Symfony调用entity,当然entity Locale没有这个静态函

我有一个旧代码的应用程序-普通php和新代码-Symfony。当在旧的代码调用类symfony autoloader中截取类时,如何告诉symfony调用非常需要的类

我有来自旧代码的
app/old/core/classes/Locale.php
,没有名称空间和
app/src/AppBundle/Entity/Locale.php
根据新代码,这是带有名称空间的实体

在旧代码中,我从旧代码中调用静态函数Locale,但是Symfony调用entity,当然entity Locale没有这个静态函数,我有错误

class Page
{
    function replacePageTags($replace_arr)
    {
        // set brases for keys
        $braced_arr = Array();

        foreach($replace_arr as $key => $value) {
            $braced_arr["{".$key."}"] = $value;
        }

        //this I have error 
        $this->content = Locale::replaceTags($this->content, $braced_arr);
    }
}
错误消息:

试图调用类“Locale”的名为“replaceTags”的未定义方法

我何时将include Locale添加到类页面

include('Locale.php');

class Page
{
出错

错误:无法声明类区域设置,因为该名称已在使用中

但是当我添加到实体
静态函数replaceTags($text,$replace\u arr)
时仍然有错误,可能Symfony调用了另一个区域设置,但我需要从旧功能调用区域设置,我该怎么做

也许这是因为在自动加载中的composer中

    "autoload": {
    "psr-4": {
        "": "src/"
    }
但是旧代码不在src中,或者我不知道

在另一个开发人员没有这个问题,我有php版本7.0.14,他们有7.0.8,也许我需要一些低ph值破坏,我不知道(
如何在旧代码中调用急需的类或修复此问题?

如果旧库没有名称空间,可以使用来进行映射

require_once '/path/to/src/Symfony/Component/ClassLoader/MapClassLoader.php';

$mapping = array(
    'Foo' => '/path/to/Foo',
    'Bar' => '/path/to/Bar',
);

$loader = new MapClassLoader($mapping);

$loader->register();
您可以使用在旧代码上自动执行此操作。
通过这种方式,您可以为所有旧类创建一个自定义名称空间,如
Legacy\Class

如果您的旧库没有名称空间,您可以使用它进行映射

require_once '/path/to/src/Symfony/Component/ClassLoader/MapClassLoader.php';

$mapping = array(
    'Foo' => '/path/to/Foo',
    'Bar' => '/path/to/Bar',
);

$loader = new MapClassLoader($mapping);

$loader->register();
您可以使用在旧代码上自动执行此操作。
通过这种方式,您可以为所有旧类创建一个自定义名称空间,如
Legacy\Class
,您的
页面
类从扩展中使用的名称空间


您唯一的选择是禁用扩展,因为由于类名冲突,遗留(无名称空间)代码与它不兼容。

您的
页面
类使用扩展



您唯一的选择是禁用扩展,因为由于类名冲突,遗留(无命名空间)代码与它不兼容。

请在问题中添加实际的错误消息。是否启用了扩展?错误消息
试图调用类“Locale”的名为“replaceTags”的未定义方法.
因为symfony调用了另一个名为Locale的cals,我想扩展名是什么?你确认
php-m | grep intl
没有返回任何内容吗?@AlexBlex我认为这与symfony Locale无关,他有自定义classes@AlexBlex
intl
我有个问题,请在问题中添加实际的错误信息。你有没有启用张力?错误消息
试图调用类“Locale”的名为“replaceTags”的未定义方法.
因为symfony调用了另一个名为Locale的cals,我想扩展名是什么?你确认
php-m | grep intl
没有返回任何内容吗?@AlexBlex我认为这与symfony Locale无关,他有自定义classes@AlexBlex
intl
我有intlIf如果是这个问题,我建议使用composer来映射类Instead.如果是问题,我建议使用composer来映射类。如何禁用扩展?这取决于您是如何安装的。
pecl uninstall intl
apt get remove php5 intl
等。如果您可以在php配置中找到类似
intl.ini
的内容,例如
/etc/php5/mods可用
,您可以对其进行注释out liek
;extension=intl.ini
如何禁用扩展?这取决于您是如何安装的。
pecl uninstall intl
apt get remove php5 intl
等。如果您可以在php配置中找到类似
intl.ini
的内容,例如
/etc/php5/mods可用
,您可以将其注释掉liek
;extension=intl.ini