【问题标题】:How to define a PHP variable as a specific class type before instantiate an object?如何在实例化对象之前将 PHP 变量定义为特定的类类型?
【发布时间】:2013-12-11 21:47:49
【问题描述】:

我正在创建自己的 MVC 框架,我希望它非常基本,但是当我使用一些 IDE 时,例如 Eclipse 或 NetBeans 他们往往会给我警告,告诉我这些变量其中未初始化或它们不识别它们是什么类型,因此它们不autocomplete 变量应该属于的类方法或属性。

为了覆盖它,我创建了一个 PHP 文件,其中设置了全局环境变量并实例化了一个新对象,然后将其销毁,因此 IDE 可以识别它并且我可以很好地使用它。

但是这些类的构造函数在那个时候执行,这可能很危险,甚至会减慢我的代码。那么,为了更好地覆盖它,我如何将变量类型定义为特定类,而不实例化它?

就像在Delphi 我们做var Test = TTest; 在Java 我们做String testString; 在testString = new String; 之前

【问题讨论】:

    标签: php types


    【解决方案1】:

    根据 IDE,可以使用 PHPDoc cmets 获取代码补全

     /** @var YourClass */
     private $variable;
    

    这是特定于 IDE 的

    编辑和 6 年后(几乎是今天),随着 php 7.4 的出现,您现在可以为类属性声明类型:

    Class SomeClass
    {
    
        private YourClass $variable;
    
        public string $something_else;
    
    }
    

    【讨论】:

    • 这里是PHPDocumentor的官方文档:phpdoc.org/docs/latest/references/phpdoc/tags/var.html
    • 这确实有帮助,在 Eclipse 中使用它。谢谢!
    • 您是否知道这在 NetBeans 8.2 中是否有效?并且,如果是这样,我应该提供该类的相对路径以使其工作,还是只需要YourClass 就可以了?谢谢
    【解决方案2】:

    PHP 是松散类型的,所以你不能像在 Java 中那样做。不过,您可以为自定义类提供类型提示。请参阅 PHP.net 上的此说明:http://php.net/manual/en/language.oop5.typehinting.php

    【讨论】:

    • 那是合适的,谢谢。我可以在使用外部对象的类方法中创建一个提示参数。
    【解决方案3】:

    我现在知道 Facebook 开发人员创建了一个名为 Hack 的 PHP 变体,这是一个具有强类型的 PHP。

    【讨论】:

      【解决方案4】:

      类型声明可以添加到函数参数、返回值,以及从 PHP 7.4.0 开始的类属性。

      当然不是所有的 php 版本!

      see more

      【讨论】:

        猜你喜欢
        • 2013-05-20
        • 2019-02-13
        • 1970-01-01
        • 1970-01-01
        • 2022-07-05
        • 2013-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多