用PHP实现基本OO
如果不告诉我买一本书,有人愿意回答以下问题吗 如果我在一个名为foo的类的命名空间中。我想建立另一个名为bar的类。我将如何着手使foo意识到bar,反之亦然?代价是什么?请记住,可能会有一个有用类的完整缩影没有书,但是 如果您的类位于不同的名称空间中:用PHP实现基本OO,php,namespaces,Php,Namespaces,如果不告诉我买一本书,有人愿意回答以下问题吗 如果我在一个名为foo的类的命名空间中。我想建立另一个名为bar的类。我将如何着手使foo意识到bar,反之亦然?代价是什么?请记住,可能会有一个有用类的完整缩影没有书,但是 如果您的类位于不同的名称空间中: <?php namespace MyProject; class Bar { /* ... */ } namespace AnotherProject; class Foo{ /* ... */ function test(
<?php
namespace MyProject;
class Bar { /* ... */ }
namespace AnotherProject;
class Foo{ /* ... */
function test() {
$x = new \MyProject\Bar();
}
}
?>
如果类在同一个名称空间中,就好像根本没有名称空间一样。没有书,但是
如果您的类位于不同的名称空间中:
<?php
namespace MyProject;
class Bar { /* ... */ }
namespace AnotherProject;
class Foo{ /* ... */
function test() {
$x = new \MyProject\Bar();
}
}
?>
如果类在同一个名称空间中,就好像根本没有名称空间一样。您也可以使用using语句使用其他名称空间中的其他类。以下示例在命名空间中实现了一对核心类:
namspace TEST
{
using \ArrayObject, \ArrayIterator; // can now use by calling either without the slash
class Foo
{
function __construct( ArrayObject $options ) // notice no slash
{
//do stuff
}
}
}
还可以通过using语句使用其他名称空间中的其他类。以下示例在命名空间中实现了一对核心类:
namspace TEST
{
using \ArrayObject, \ArrayIterator; // can now use by calling either without the slash
class Foo
{
function __construct( ArrayObject $options ) // notice no slash
{
//do stuff
}
}
}
关于名称空间问题,我指的是。在面向对象方面,我只能说,这个提议的
Foo
和Bar
的相互感知有一点异味。您更愿意使用接口,并让实现类具有对接口的引用。这可能就是所谓的
关于名称空间问题,我指的是。在面向对象方面,我只能说,这个提议的
Foo
和Bar
的相互感知有一点异味。您更愿意使用接口,并让实现类具有对接口的引用。这可能就是所谓的
foo类知道bar类还是foo实例知道bar实例?这个问题不是关于PHP名称空间,而是关于OOP吗?stefano:both=)xtofl:wellfoo类知道bar类还是foo实例知道bar实例?这个问题不是关于PHP名称空间吗,而不是关于OOP?stefano:两者都=)xtofl:还有残酷而丑陋的事实:/@Filip:这就是否决票?pffff;美好的这个问题的答案显然是由手册给出的。好吧,“RTFM”没有那么礼貌。是的,这是反对票,刻薄和使用这样的语言应该受到惩罚。>>如果类在同一个名称空间中,就好像根本没有名称空间一样。绝对正确。然而,否决票来自这样一个事实,即我对名称空间本身并不真正感兴趣。太敏感了。@Mike:再看看你的问号吧!(php,名称空间)而你的问题并没有说明你的类在哪里。因此,我善意地回答了所有“名称空间案例”的问题。非常感谢你投了反对票……残酷而丑陋的事实:/@Filip:这就是反对票?pffff;美好的这个问题的答案显然是由手册给出的。好吧,“RTFM”没有那么礼貌。是的,这是反对票,刻薄和使用这样的语言应该受到惩罚。>>如果类在同一个名称空间中,就好像根本没有名称空间一样。绝对正确。然而,否决票来自这样一个事实,即我对名称空间本身并不真正感兴趣。太敏感了。@Mike:再看看你的问号吧!(php,名称空间)而你的问题并没有说明你的类在哪里。因此,我善意地回答了所有“名称空间案例”的问题。非常感谢你投反对票。。。