繁体   English   中英

使用名称空间的第一步

[英]First steps using namespaces

是第一次在项目中使用命名空间。 我有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>

有任何想法吗 ?。

定义名称空间时,不应在其中使用类名。

具有定义的类:

namespace AdminManantiales\Classes\Abm;

abstract class Usuario { // Implement ... }

使用后将可访问

use AdminManantiales\Classes\Abm\Usuario;

要么

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

更好地解释一下:命名空间可以视为bag,而class将是该bag中的项。 要访问选定的物品,您必须提供行李袋的名称( AdminManantiales\\Classes\\Abm )和此物品( Usuario ):)

您将每个类放在其自己的名称空间中,因为要在名称空间名称中包含类名称。

代替对所有类执行此操作:

namespace AdminManantiales\Classes\Abm;

这也将使您简化语法。 现在,这些类位于相同的名称空间中,您无需使用完全限定的名称来引用它们,因此这将起作用:

class Alumno extends Usuario { ... }

切勿在名称空间声明中使用斜杠和点。

wrong formats:

<?php

namespace first\second.w;

?>

<?php

namespace first/second;

?>

在这里检查php.net

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM