1

プロジェクトで名前空間を使用するのは初めてです。私は3つのクラスを持っています:

Contacto.class.php

/**
 * Gestiona las operaciones ABM de la informacion de contacto de un usuario 
 * cualquiera.
 * 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\Contacto;

class Contacto { // Implement ... }

Usuario.class.php

/**
 * Gestiona las operaciones ABM del tipo de usuario más abstracto.
 * 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\Usuario;

abstract class Usuario { // Implement ... }

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\Alumno;

class Alumno extends \AdminManantiales\Classes\Abm\Usuario{ // Implement ... }

クラスのパスはROOT/classes/Abm. したがって、動作するクラスを含める場合:

include($_SERVER['DOCUMENT_ROOT']."/classes/Abm/Contacto.class.php");
include($_SERVER['DOCUMENT_ROOT']."/classes/Abm/Usuario.class.php");
include($_SERVER['DOCUMENT_ROOT']."/classes/Abm/Alumno.class.php");

次のメッセージで失敗します。Class 'AdminManantiales\Classes\Abm\Usuario' not found in <b>/media/Datos/www/AdminManantiales/classes/Abm/Alumno.class.php</b> on line <b>12</b>

何か案は ?。

4

3 に答える 3

3

名前空間名にクラス名を含めているため、各クラスを独自の名前空間に配置しています。

これを行う代わりに、すべてのクラスに対してこれを行います。

namespace AdminManantiales\Classes\Abm;

これにより、構文を簡素化することもできます。クラスが同じ名前空間にあるため、完全修飾名でそれらを参照する必要がないため、これは機能します。

class Alumno extends Usuario { ... }
于 2013-09-16T12:40:42.700 に答える
1

名前空間の宣言でスラッシュとドットを使用しないでください。

wrong formats:

<?php

namespace first\second.w;

?>

<?php

namespace first/second;

?>

ここでphp.netを確認してください

于 2013-09-16T12:41:21.810 に答える