Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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 类定义为另一个类的静态成员_Php_Class_Member - Fatal编程技术网

Php 类定义为另一个类的静态成员

Php 类定义为另一个类的静态成员,php,class,member,Php,Class,Member,我一直在用Java做这类事情,我试图弄清楚这在PHP中是否可行。如果可能的话,这就是我希望语法看起来的样子,但是我想知道是否有一些特殊的方法来实现它(如果可能的话,就是这样) 不,这是不可能的 但是,您可以使用名称空间实现类似的效果。在PHP中无法实现,但在PHP5.3中,您可以使用名称空间实现类似的功能 不,你不能。然而,PHP5.3中引入的是。使用名称空间,您可以类似地执行以下操作: <?php namespace MyNamespace { use Exception;

我一直在用Java做这类事情,我试图弄清楚这在PHP中是否可行。如果可能的话,这就是我希望语法看起来的样子,但是我想知道是否有一些特殊的方法来实现它(如果可能的话,就是这样)


不,这是不可能的


但是,您可以使用名称空间实现类似的效果。

在PHP中无法实现,但在PHP5.3中,您可以使用名称空间实现类似的功能


不,你不能。然而,PHP5.3中引入的是。使用名称空间,您可以类似地执行以下操作:

<?php
namespace MyNamespace
{
    use Exception;

    class FooBarException
        extends Exception
    {
    }

    class FooBazException
        extends Exception
    {
    }

    class Foo
    {
        public function doSomething()
        {
            throw new FooBarException;
        }
    }
}

namespace AnotherNamespace
{
    $bang = new \MyNamespace\Foo;
    try {
        $bang->doSomething();
    } catch(\MyNamespace\FooBarException $up) {
        throw $up; // :)
    }
}

顺便说一句,我忘了在任何语言中都有这样做的实际名称。我原以为它是“子类”,但那会被用作“FooberException是异常的子类”…除了你的话,我想你在寻找“内部类”,这里有一个类似问题的链接:简短的回答是“不”,它也被称为“嵌套类”。@watcher和linepogl-谢谢,这就是为什么我找不到重复的。“成员类”在搜索中一直被视为“类成员”…令人失望,但+1和接受,因为我甚至不知道名称空间。
<?php
namespace MyNamespace
{
    use Exception;

    class FooBarException
        extends Exception
    {
    }

    class FooBazException
        extends Exception
    {
    }

    class Foo
    {
        public function doSomething()
        {
            throw new FooBarException;
        }
    }
}

namespace AnotherNamespace
{
    $bang = new \MyNamespace\Foo;
    try {
        $bang->doSomething();
    } catch(\MyNamespace\FooBarException $up) {
        throw $up; // :)
    }
}