我觉得好迷糊啊
- PHP code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><?php class cA { /** * Test property for using direct default value */ protected static $item = 'Foo'; /** * Test property for using indirect default value */ protected static $other = 'cA'; public static function method() { print self::$item."\r\n"; // It prints 'Foo' on everyway... :( print self::$other."\r\n"; // We just think that, this one prints 'cA' only, but... :) } public static function setOther($val) { self::$other = $val; // Set a value in this scope. } } class cB extends cA { /** * Test property with redefined default value */ protected static $item = 'Bar'; public static function setOther($val) { self::$other = $val; } } class cC extends cA { /** * Test property with redefined default value */ protected static $item = 'Tango'; public static function method() { print self::$item."\r\n"; // It prints 'Foo' on everyway... :( print self::$other."\r\n"; // We just think that, this one prints 'cA' only, but... :) } /** * Now we drop redeclaring the setOther() method, use cA with 'self::' just for fun. */ } class cD extends cA { /** * Test property with redefined default value */ protected static $item = 'Foxtrot'; /** * Now we drop redeclaring all methods to complete this issue. */ } cB::setOther('cB'); // It's cB::method()! cB::method(); // It's cA::method()! cC::setOther('cC'); // It's cA::method()! cC::method(); // It's cC::method()! cD::setOther('cD'); // It's cA::method()! cD::method(); // It's cA::method()! /** * Results: -> * Foo * cB * Tango * cC * Foo * cD * * What the hell?! :) */ ?>
这是覆盖,还是什么啊?为什么输出这样啊,不能理解啊,听乱的啊。
------解决方案--------------------
这叫什么呢?自找麻烦!
为累而累
------解决方案--------------------
不理解就算了,无所谓的事。
------解决方案--------------------
------解决方案--------------------
这样可能会清楚些
- PHP code
class cA { /** * Test property for using direct default value * 使用直接默认值测试属性 */ protected static $item = 'Foo'; /** * Test property for using indirect default value * 使用间接默认值测试属性 */ protected static $other = 'cA'; public static function method() { print __METHOD__ . ' ' . __CLASS__ . '::$item=' . self::$item."\r\n"; print __METHOD__ . ' ' . __CLASS__ . '::$otfer=' . self::$other."\r\n"; } public static function setOther($val) { self::$other = $val; // Set a value in this scope. } } class cB extends cA { /** * Test property with redefined default value * 重新定义了默认值测试属性 */ protected static $item = 'Bar'; public static function setOther($val) { self::$other = $val; } } class cC extends cA { /** * Test property with redefined default value * 重新定义了默认值测试属性 */ protected static $item = 'Tango'; public static function method() { print __METHOD__ . ' ' . __CLASS__ . '::$item=' . self::$item."\r\n"; print __METHOD__ . ' ' . __CLASS__ . '::$otfer=' . self::$other."\r\n"; } /** * Now we drop redeclaring the setOther() method, use cA with 'self::' just for fun. */ } class cD extends cA { /** * Test property with redefined default value * 重新定义了默认值测试属性 */ protected static $item = 'Foxtrot'; /** * Now we drop redeclaring all methods to complete this issue. * 现在,我们放弃重新声明的所有方法来完成这个问题 */ } cB::setOther('cB'); // It's cB::method()! cB::method(); // It's cA::method()! cC::setOther('cC'); // It's cA::method()! cC::method(); // It's cC::method()! cD::setOther('cD'); // It's cA::method()! cD::method(); // It's cA::method()! <div class="clear"> </div>

在使用PHP进行web应用开发时,很多时候会需要使用数据库。而在使用数据库时,错误提示是非常常见的事情。其中,PHPFatalerror:Calltoamemberfunctionfetch()是一种比较常见的错误,它会在使用PDO查询数据库时出现。那么,这个错误是怎么引起的,以及如何解决呢?本文将为大家详细阐述。一、错误产生原

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code<form name="myform"

一、static 请先看下面这段程序:publicclassHello{publicstaticvoidmain(String[]args){//(1)System.out.println("Hello,world!");//(2)}}看过这段程序,对于大多数学过Java的从来说,都不陌生。即使没有学过Java,而学过其它的高级语言,例如C,那你也应该能看懂这段代码的意思。它只是简单的输出“Hello,world”,一点别的用处都没有,然而,它却展示了static关键字的主

c语言static的作用和用法:1、变量作用域;2、生命周期;3、函数内部;4、修饰全局变量;5、修饰函数;6、其他用途;详细介绍:1、变量作用域,当一个变量前有static关键字,那么这个变量的作用域被限制在声明它的文件内,也就是说,这个变量是“文件级作用域”,这对于防止变量的“重复定义”问题很有用;2、生命周期,静态变量在程序开始执行时初始化一次,并在程序结束时销毁等等。

static的作用:1、变量;2、方法;3、类;4、其他用途;5、多线程环境;6、性能优化;7、单例模式;8、常量;9、局部变量;10、内存布局优化;11、避免重复初始化;12、在函数中使用。详细介绍:1、变量,静态变量,当一个变量被声明为static时,它属于类级别,而不是实例级别,这意味着无论创建多少个对象,都只有一个静态变量存在,所有对象都共享这个静态变量等等。

C语言中static关键字的实际应用场景及使用技巧一、概述static是C语言中的一个关键字,用于修饰变量和函数。它的作用是改变其在程序运行过程中的生命周期和可见性,使得变量和函数具有静态的特性。本文将介绍static关键字的实际应用场景及使用技巧,并通过具体的代码示例进行说明。二、静态变量延长变量的生命周期使用static关键字修饰局部变量可以将其生命周期

不,我们不能将顶级类声明为私有或受保护。它可以是公共或默认(无修饰符)。如果没有修饰符,则应该具有默认访问权限。语法//Atoplevelclass publicclassTopLevelClassTest{ //Classbody}如果将一个顶级类声明为私有(private),编译器将会报错,提示“在此处不允许使用修饰符private”。这意味着顶级类不能是私有的,同样也适用于protected访问

jQuery中POST请求方式的使用方法在Web开发中,经常会涉及到前端页面与后端服务器之间的数据交互。其中,POST请求是常用的一种方式,通过POST请求可以向后端服务器提交数据,并获取相应的返回结果。jQuery是一款流行的JavaScript库,提供了便捷的方法来进行AJAX请求,本文将介绍如何使用jQuery中的POST方法进行数据传输,并提供具体的


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境