簡體   English   中英

在PHP類中,如何使變量成為特定類型?

[英]In a PHP class, how can I make it so that the variables are a specific type?

我有一個PHP類,我想擁有它,因此該變量只是一個布爾值?

class TestClass {
    private $isTrue;

    public function __construct ( $isTrue) {
        $this -> isTrue = $isTrue;
    }

    public function getIsTrue ($isTrue) {
        return $this -> isTrue;
    }

    public function setIsTrue ($isTrue) {
        $this -> isTrue = $isTrue;
    }
}

還是我需要像這樣在setter和構造函數中執行此操作?

class TestClass {
    private $isTrue;

    public function __construct ( $isTrue) {
        $this -> isTrue = (bool)$isTrue;
    }

    public function getIsTrue ($isTrue) {
        return $this -> isTrue;
    }

    public function setIsTrue ($isTrue) {
        $this -> isTrue = (bool)$isTrue;
    }
}

是的,在PHP <7中,您必須手動完成此操作。

但是,在PHP 7中,可以使用標量類型提示來實現相同的目的:

<?php
class TestClass {
    private $isTrue;

    public function __construct(bool $isTrue) {
        $this->isTrue = $isTrue;
    }

    public function getIsTrue() {
        return $this->isTrue;
    }

    public function setIsTrue(bool $isTrue) {
        $this->isTrue = $isTrue;
    }
}

$tc = new TestClass(true);
var_dump($tc->getIsTrue()); //true

$tc->setIsTrue(false);
var_dump($tc->getIsTrue()); //false

$tc->setIsTrue(1);
var_dump($tc->getIsTrue()); //true

您還可以啟用嚴格類型模式,最后一種情況將引發錯誤:

<?php
declare(strict_types=1);

// ...same code here ...

$tc->setIsTrue(1);
var_dump($tc->getIsTrue());

將產生:

Fatal error: Uncaught TypeError: Argument 1 passed to TestClass::setIsTrue() must be of the type boolean, integer given, called in /.../sth.php on line 27 and defined in /.../sth.php:16

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM