首页 > 解决方案 > 在 PHP 7 中使用变量实例化对象

问题描述

在我的本地机器上,运行 Win 10,PHP 7.4 以下代码可以工作,但不能在我的生产服务器上工作,即使我在两者上都有相同的 PHP 版本。

<?php
use controller\Admin;

$ct_name = 'controller'. DIRECTORY_SEPARATOR . ucfirst($this->url[0]);

$controller = new $ct_name();

我以前有时尝试过一些有效的方法,但我不记得我做了什么。

标签: php

解决方案


看起来你DIRECTORY_SEPARATOR就是问题所在,除非你在 Windows 上,否则它DIRECTORY_SEPARATOR是一个正斜杠,其中命名空间分隔符需要是一个反斜杠。

我快速编辑了您的代码,因此您可以尝试一下:

<?php
use controller\Admin;

$ct_name = 'controller\\' . ucfirst($this->url[0]);

$controller = new $ct_name();

请注意,在字符串中使用反斜杠时,几乎总是需要转义。


推荐阅读