一只大脸猫博客主要分享PHP开发技巧、Web前端技术、网站优化、网站排名、修电脑、心灵鸡汤等一些生活中遇到的事、道理和技巧。分享更多知识给身边的朋友。
一只大脸猫博客主要分享PHP开发技巧、Web前端技术、网站优化、网站排名、修电脑、心灵鸡汤等一些生活中遇到的事、道理和技巧。分享更多知识给身边的朋友。

PHP 7新特性四 Typed properties (属性类型化)


随着标量类型和返回类型的引入,PHP 7 大大增强了 PHP 类型系统的功能。 但是,目前无法为类属性声明类型,从而迫使开发人员使用 getter 和 setter 方法来强制执行类型契约。 这要求了不必要的样板,使得使用不那么符合人体工程学的方式,并且对性能有不好影响。 此 RFC 通过引入对类属性类型声明的支持来解决该问题。

//此前
class User {
    /** @var int $id */
    private $id;
    /** @var string $name */
    private $name;

    public function __construct(int $id, string $name) {
        $this->id = $id;
        $this->name = $name;
    }

    public function getId(): int {
        return $this->id;
    }
    public function setId(int $id): void {
        $this->id = $id;
    }

    public function getName(): string {
        return $this->name;
    }
    public function setName(string $name): void {
        $this->name = $name;
    }
}
//现在
class User {
    public int $id;
    public string $name;

    public function __construct(int $id, string $name) {
        $this->id = $id;
        $this->name = $name;
    }
}

不牺牲任何类型安全的情况下。

与先前提案的主要区别

先前 已提出类型属性,但当时已被拒绝。新提案有两个主要差异,我们认为这些差异解决了之前提案的大部分问题:

支持静态属性的类型。由于实现问题,以前的RFC中未包含对静态属性类型的支持,从而导致语言不一致。在新提议下,可以将类型声明添加到静态属性,其语义与普通属性相同。

支持对类型属性的引用。之前的提案不允许引用类型属性,因为如果通过引用间接修改属性,则难以强制执行类型。新提议允许引用类型属性,并且即使通过引用进行修改,也会强制执行声明的类型。


PHP 7新特性四 Typed properties (属性类型化):http://www.yzdlm.com/php/14.html

作者:大脸猫 分类: PHP博客


上一篇:PHP 7 新特性三 Traits 下一篇:为什么大家总喜欢黑PHP?PHP到底做错了什么

评论


乖,登录后才可以留言!
QQ一键登录

相关文章

0、2019-09-14——Zend创始人提议创建PHP方言,暂命名为P++
1、2019-07-20——PHP开发环境:composer 下载扩展包慢怎么办?
2、2019-07-20——composer如何安装?
3、2019-07-18——Composer -- PHP依赖管理的新时代
4、2019-07-17——PHP 开发者该知道的 5 个 Composer 小技巧
5、2019-07-16——Composer 是什么?
6、2019-06-12——PHP 7新特性五 Spread operator(数组延展操作符)
7、2019-06-01——为什么大家总喜欢黑PHP?PHP到底做错了什么
8、2019-05-24——PHP 7新特性四 Typed properties (属性类型化)
9、2019-05-24——PHP 7 新特性三 Traits
10、2019-05-23——PHP 7 新特性二 Null coalescing operator(空合并运算符)
11、2019-05-23——PHP 7新特性一 Short closures 短闭包
12、2019-05-22——在线编辑器实现代码高亮展示
13、2019-05-21——PHP早已不是十年前的鸟样
14、2019-05-20——PHP是什么?
Top