2

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();ラインで失敗します。次のメッセージで:

クラス 'AdminManantiales\Classes\Abm\Alumno' が見つかりません

「use」キーワードを使用してクラスを正しく含めるにはどうすればよいですか?

4

2 に答える 2

5

useキーワードは実際は何もしません。(またはファイルパスが何であれ)を使用して手動でPHPスクリプトを含めるか、このような自動ロードを使用する必要があります。include \AdminManantiales\Classes\Abm\Alumno.php

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次に、このスクリプトを保存して、キーワードを使用するスクリプトを含めることができます。

于 2013-09-18T14:36:48.380 に答える
2

composer でオートロードを使用することもできます (ただしAppsrc/あなたにとっては異なるでしょう):

{
    "require": {

    },
    "autoload": {
        "psr-0": {
            "App": "src/"
        }
    }
}

composer.phar dumpautoloadコンソールで実行する必要がある場合もあります。

于 2015-09-07T10:16:50.183 に答える