簡體   English   中英

在類中聲明變量的目的是什么

[英]What is the purpose of declaring variables in a class

如果一個變量在沒有它的情況下工作,那么在一個類的頂部聲明一個變量的目的是什么?

class Testclass
{
    public $testvar = "default value";

    public function setTestvar($testvar) { 
        $this->testvar = $testvar; 
    }

    public function getTestvar() { 
        return $this->testvar; 
    }
}

相比:

class Testclass
{
    public function setTestvar($testvar) { 
        $this->testvar = $testvar; 
    }

    public function getTestvar() { 
        return $this->testvar; 
    }
}

兩種變體都是正確的,但在初始化之前獲取testvar時缺少第二種變體。

如果你調用$test->getTestvar(); 在使用$test->setTestval('bla bla');設置它之前$test->setTestval('bla bla'); ,你會得到一個警告,如:

注意 :未定義的屬性:Testclass :: $ testvar

第二個變體也缺少屬性可見性部分(即私有,受保護)。 更多關於可見性

方法上面的類屬性聲明是一種很好的做法,它取自嚴格的oop語言,如java。

在PHP中,包含聲明沒有功能目的。 您似乎已經閱讀了文檔並且100%正確。

但是有一個案例。 如果我們 在設置變量之前 調用 getter ,我們將得到一個undefined variable異常。

現在讓我們考慮一下。

假設我是一名程序員,專門研究c ++和java。 我是這些語言的專家(所以我很快就拿起PHP),而你的公司只是聘請我來幫助你處理你正在使用的Web應用程序。 我看一下這個對象,並且不知道發生了什么。

真正歸結為PHP是我所知道的最奇怪的語言之一。 你偶然發現了PHP所做的許多奇怪的事情之一。 這不會是你的最后一次。 對象是模板; 它們是程序員可以出於各種原因使用的代碼片段。 在制作對象時我們可以做的信息和格式越多,其他程序員就越有效地使用它。 它與我們格式化代碼的原因完全相同。

TL; DR

沒有理由,除了文檔,易於閱讀和避免未聲明的變量。

編輯

提出了另一個重要問題

在全局上下文中聲明變量允許您設置屬性可見性。 公共或私人。 因為你有getter和setter我假設你的屬性是私有的。 所以你需要聲明。

暫無
暫無

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

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