gpt4 book ai didi

php - 使用命名空间找不到类

转载 作者:行者123 更新时间:2023-12-02 07:33:58 24 4
gpt4 key购买 nike

我有一个名为 Alumno.class.php 的类,位于 Root\Classes\Abm\Alumno.class.php 中。所以这个类头是:

/**
* Gestiona las operaciones ABM del tipo de usuario alumno.
* La clase no realiza validaciones, eso será labor del controlador.
* @package AdminManantiales
* @subpackage Abm
* @author Ramiro Martínez D'Elía
*/

namespace AdminManantiales\Classes\Abm;

class Alumno extends Usuario{ // Implement }

现在,我需要在 php 脚本中使用该类,并尝试这样做:

use \AdminManantiales\Classes\Abm\Alumno as AbmAlumno;
[...]
// Proceso el alta.
$alumno = new AbmAlumno();
$alumno->alta($_POST);
$nombreCompleto = $alumno->toStr();

但它在 $alumno = new AbmAlumno(); 行失败了。随着下一条消息:

Class 'AdminManantiales\Classes\Abm\Alumno' not found

如何使用“use”关键字正确包含类?

最佳答案

use 关键字实际上 没有做任何事情。您必须包括 PHP手动编写脚本,使用 include\AdminManantiales\Classes\Abm\Alumno.php(或任何文件路径)或使用 autoloading像这样,

function autoload($classId)
{
$classIdParts = explode("\\", $classId);
$classIdLength = count($classIdParts);
$className = strtolower($classIdParts[$classIdLength - 1]);
$namespace = strtolower($classIdParts[0]);

for ($i = 1; $i < $classIdLength - 1; $i++) {
$namespace .= '/' . $classIdParts[$i];
}

if (file_exists(dirname(__FILE__))
. '/' . $namespace
. '/' . $className
. '.class.php') {
include $namespace . '/' . $className . '.class.php';
}
}

spl_autoload_register('autoload');

然后您可以存储此脚本并将其包含在您使用 use 关键字的任何脚本中。

关于php - 使用命名空间找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18874606/

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