《php与MySQL Web开发》-读书笔记二
来源:互联网 发布:好听的淘宝优惠群取名 编辑:程序博客网 时间:2024/03/29 02:34
15 理解作用域
变量的作用域可以控制变量在哪里是可见并且可用的。不同的编程语言有不同的变量作用域规则。PHP具有相当简单的规则:
1 在函数内部声明的变量作用域是从声明它们的那条语句开始到函数末尾。这叫做函数作用域。这些变量称为局部变量。
<?phpfunction fun(){ try { $ob = new obj; } catch(Exception $e) { echo $e->getMessage(); } $ob->g(); //注意:$ob变量并没有出函数作用域}
2 在函数外部声明的变量作用域是从声明它们的那条语句开始到文件末尾,而不是函数内部。这叫做全局作用域。这些变量称为全局变量。
3 特殊的超级全局变量在函数内部和外部都是可见的。例如,_GET,_POST,_FILE.等。
4 使用require() 和include()并不影响作用域。如果这两个语句用于函数内部,函数作用域适用。如果它不在函数内部,全局作用域适用。
5 关键字global可以用来手动指定一个字函数中定义或使用的变量具有全局作用域。
6 通过调用 unset($variable_name) 可以手动删除变量。如果变量删除,它就不在参数所指定的作用域中了。
16 子类调用基类的函数
<?phpclass A{ public function __construct() { echo "A::__construct()"; } public function fun() { echo "A::fun()"; }}class B extends A{ public function __construct() { A::__construct(); // 第一种调用父类构造函数的方法 parent::__construct(); // 第二种调用父类函数的方法 echo "B::__construct()"; }}class C extends B{ public function fun() { parent::fun(); // 第一种调用父类方法 A::fun(); // 第二种使用基类名::函数名调用基类的函数(包括静态函数) }}?>
17 new self()和new self()的区别
专业解释:
self refers to the same class whose method the new operation takes place in.
static in PHP 5.3’s late static bindings refers to whatever class in the hierarchy which you call the method on.
In the following example, B inherits both methods from A. self is bound to A because it’s defined in A’s implementation of the first method, whereas static is bound to the called class (also see get_called_class() ).
class A { public static function get_self() { return new self(); } public static function get_static() { return new static(); }}class B extends A {}echo get_class(B::get_self()); // Aecho get_class(B::get_static()); // Becho get_class(A::get_static()); // A
参考资料:http://blog.csdn.net/wlywly1987/article/details/6956319
18 使用类的成员变量
class A{ public $_pub = 0; private $_pri = 0; public function __construct() { $this->_pub = 1; // 注意:不是$this->$_pub $this->_pri = 2; }}$a = new A();echo $a->_pub; // 打印 1,注意:不是$a->$_pub;echo $a->_priv; // error, cannot access private property
19 使用类的静态变量
class B{ private static $_s1 = 0; public static $_s2 = 0; public function __construct() { self::$_s1 = 1; // 注意:使用self::$_s1 不要忘记$ self::$_s2 = 2; }}$b = new B();$b->$_s2; //error,必须使用类名::变量echo E::$_s1; // ok
- 《php与MySQL Web开发》-读书笔记二
- PHP和MySQL Web开发读书笔记二
- 《php与MySQL Web开发》-读书笔记一
- 《PHP 与 MySQL Web 开发》读书笔记 (一)
- PHP和MySQL Web开发读书笔记一
- 《PHP和MySQL Web开发》-- 读书笔记
- PHP和MySQL Web开发 读书笔记
- PHP与MySQL程序设计读书笔记(二)
- PHP与MySQL.WEB开发
- PHP和MySQL Web开发读书笔记---创建Web数据库
- PHP和MySQL Web开发读书笔记---web应用的安全
- PHP和MySQL Web开发读书笔记---面向对象的PHP
- PHP和MySQL Web开发读书笔记---使用mysql数据库
- PHP和MySQL Web开发读书笔记---MySQL高级编程
- PHP和MySQL Web开发读书笔记---数据的存储与检索
- PHP和MySQL Web开发读书笔记---与文件系统和服务器的交互
- PHP和MySQL Web开发(二)
- PHP和MySQL Web开发读书笔记---错误和异常处理
- 市赛选拔赛题目集锦
- 第8题
- [BZOJ2330]SCOI2011糖果|差分约束
- 阿里巴巴平台型产品经理
- How To Avoid Disk Full Issues Because OPatch Backups Take Big Amount Of Disk Space. (文档 ID 550522.1)
- 《php与MySQL Web开发》-读书笔记二
- LeetCode 66 Plus One
- myeclipse错误 Creation of element failed
- java Unsafe.java(一)
- java比赛题目
- C++中的内存错误(muduo读书笔记)
- uestc 11 Judgment Day
- 第9题
- 基站选址