Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP实现基本OO_Php_Namespaces - Fatal编程技术网

用PHP实现基本OO

用PHP实现基本OO,php,namespaces,Php,Namespaces,如果不告诉我买一本书,有人愿意回答以下问题吗 如果我在一个名为foo的类的命名空间中。我想建立另一个名为bar的类。我将如何着手使foo意识到bar,反之亦然?代价是什么?请记住,可能会有一个有用类的完整缩影没有书,但是 如果您的类位于不同的名称空间中: <?php namespace MyProject; class Bar { /* ... */ } namespace AnotherProject; class Foo{ /* ... */ function test(

如果不告诉我买一本书,有人愿意回答以下问题吗

如果我在一个名为foo的类的命名空间中。我想建立另一个名为bar的类。我将如何着手使foo意识到bar,反之亦然?代价是什么?请记住,可能会有一个有用类的完整缩影

没有书,但是

如果您的类位于不同的名称空间中:

<?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,名称空间)而你的问题并没有说明你的类在哪里。因此,我善意地回答了所有“名称空间案例”的问题。非常感谢你投反对票。。。