有沒有一種方法可以防止在PHP中重寫屬性?如果是 - 如何?PHP - 重寫屬性
回答
做這樣的事情的唯一方法是在課堂上玩__set()
。 但是,__set
僅用於不可訪問的屬性。
對於公共財產,我不認爲有什麼辦法可以防止重寫。
你應該檢查出的官方文檔:http://fr2.php.net/manual/en/language.oop5.overloading.php
謝謝,但我知道什麼意思__set並不能幫助我,因爲我的屬性被聲明。 – user997379
所以我不認爲你想要做什麼是可能的... 嘗試找到另一種方式:將這些受保護的變量存儲在私有數組中,並使用特定的__get – Lao
來訪問它們所以,我沒有聲明我的屬性和。 .. :) – user997379
「是的」,如果你讓他們常量。請參閱How to implement a read-only member variable in PHP?的答案,不要跳過評論。
實施例:
class user {
const ALWAYS_ONE = 1;
}
我想,聲明特性private
也可防止過載但它們也無法進入到下降類。
謝謝,但我需要調用屬性在子類(它包含對象)與「屬性界面」 – user997379
我認爲@Jared Farrish是正確的,使用一種方法。 (很難說清楚什麼時候你不能說出完整的場景) – chelmertz
class TheBaseClass {
private $nomod = 'foo';
public function getNoMod() {
return $this->nomod;
}
}
class TheChildClass extends TheParentClass {
public function funcUsesNomod(){
return 'The value of nomod is '. $this->getNomod();
}
}
我是Jared Farrish,我贊同這個信息。 –
爲了公平對待@ dev-null-dweller,OP似乎暗示一種方法不起作用(由於某種原因它必須是一個屬性)。不過,我已經給你兩個upvotes。 –
我想這是你想要什麼:
class A{
private $a;
public function __construct(){
$this->a = 'A';
}
public function __get($property){
return $this->{$property};
}
}
class B Extends A{
public function getA(){
return $this->a;
}
public function __get($property){
return parent::__get($property);
}
}
$b = new B;
echo $b->getA();
只有當你想要一個方法而不是一個屬性,並且你控制了子類的定義時,這纔有效。 –
沒有:(我不想叫這個屬性作爲財產:D謝謝。 – user997379
@ user997379 - 你將不得不顯示你是如何需要它的實現;簡短的回答,這聽起來不可能的[''final'-like](http://en.wikipedia.org/wiki/Final_%28Java%29)在PHP中的功能不需要使用方法。 –
- 1. 重寫屬性屬性
- 2. 重寫屬性屬性
- 3. 重寫屬性
- 4. 重寫屬性
- 5. PHP OO:抽象類的重寫屬性
- 6. 重寫name屬性
- 7. 重寫StyleTypedProperty屬性
- 8. 如何獲取屬性重寫屬性?
- 9. 在Python中重寫屬性
- 10. 重寫linq屬性c#
- 11. NHibernate和重寫的屬性
- 12. 超類的重寫屬性
- 13. 重寫在GLSL屬性
- 14. 在javamoney.properties中重寫屬性?
- 15. 重寫的CSS屬性
- 16. 重寫廚師的屬性
- 17. 重寫抽象只讀屬性以讀取/寫入屬性
- 18. 爲什麼C#從重寫屬性取代重寫屬性的值?
- 19. 使用動態屬性變量不起作用的重寫屬性PHP 7.0
- 20. Javascript屬性重載ala PHP?
- 21. 重寫屬性文件中的鍵值通過重寫ResourceBundle
- 22. 爲什麼winforms設計器忽略重寫屬性的屬性?
- 23. 重寫Spring屬性是否更新引用它的屬性?
- 24. 通過linq獲取重寫屬性的屬性表達式
- 25. 獲取重寫屬性的屬性時的行爲不同?
- 26. 重寫ActiveRecord在Yii中獲取屬性
- 27. 重寫屬性或在構造
- 28. jQueryUI.dialog:重寫單個CSS樣式屬性?
- 29. Unity - 重寫GameObject的位置屬性
- 30. ActiveSupport :: Dependencies#load()重寫`load`屬性
你的意思是像[公有,保護或私有(http://php.net/manual/en/language.oop5.visibility。 PHP)? –
我有一個被稱爲pbase的類Base中的受保護的屬性(例如),我想防止覆蓋子類中的屬性。 – user997379
使它['私人'](http://codepad.org/9sxXFi2X)? –