PHP类名称空间与前缀

PHP类名称空间与前缀,php,class,namespaces,naming-conventions,prefixes,Php,Class,Namespaces,Naming Conventions,Prefixes,只是一个关于您是否喜欢使用PHP名称空间或类前缀的简单问题 <?php // ----- namespace ----- use My\Namespace; $object = new Namespace\Object; // ----- prefix with PR ----- $object = new PF_Object; //or $object = new PFObject; 将与别名组合使用: use My\Namespace\Foo as Foo; $object =

只是一个关于您是否喜欢使用PHP名称空间或类前缀的简单问题

<?php
// ----- namespace -----
use My\Namespace;
$object = new Namespace\Object;

// ----- prefix with PR -----
$object = new PF_Object; //or
$object = new PFObject;

与别名组合使用

use My\Namespace\Foo as Foo;

$object = new Foo;
这样也很有用:

namespace My\Debug\Stuff;
use My\Production\Stuff\Foo as BaseFoo;

class Foo extends BaseFoo {}

显然,不再需要使用下划线字符来伪造名称空间,因此我想问题可以归结为“在类名中使用下划线字符是个好主意吗?”

依我看,答案是否定的,首先是因为它看起来很难看(依我看),其次是因为一些旧的类加载器可能会被包含下划线的类名弄糊涂。

好吧 如果运行的是
PHP5.2.X
,则只有选项2

但是如果您运行的是
PHP5.3.X
,则可以同时使用两者


在我运行
PHP5.3.X
的情况下,我将使用新版本语言提供的功能。进行类比可能是运行java 1.6,不使用泛型(或排序)

为什么你会考虑名字空间的阻碍?< /P> 在我看来,类前缀就像是一种实现“代码中”的黑客,一种实现名称空间的机制

较新的代码现在可以选择使用本机内置的方式来处理名称空间。我非常谦虚地认为,这是一种更为干净的方法

考虑这个流行但令人大开眼界的示例,它允许遗留代码使用名称空间:

// Using native namespace features to shorten class prefixes

<?php
use Sabre_DAV_Auth_Backend_PDO as AuthBackend;
use Zend_Controller_Action_Helper_AutoComplete_Abstract as AutoComplete;

$backend = new AuthBackend();
?>
//使用本机命名空间功能缩短类前缀

这个问题太夸张了。可能来自名称空间OOP编程世界(如
Python
Java
的开发人员更喜欢第一名,其他人可能会选择第二名。。。这要看情况而定,你知道。。。每个使用真正的OOP语言的人都可能避免PHPs名称空间语法。但除了个人偏好之外,更重要的是你是否使用了PHP5.3支持。@Mario5%使用PHP5.3,这是一个令人震惊的统计数据:去年年底的OAlbeit。我只是讨厌PHP中用于名称空间分隔的字符,这让它感觉像是windows系统中的引用位置。您在处理名称空间类方面也做得很好,谢谢!