?php
//检测变量类型,自己用的最多的是is_array()了,其他的几乎没用过
$array = array(1,9.9,'abc',array(1,2,3),true,null,);
v(is_bool(111)); //false
v(is_integer(9.9)); //false
v(is_double(9.9)); //true
v(is_string('abc')); //true
v(is_null('')); //false
v(is_null(null)); //true
v(is_array($array)); //true
function v($var){
var_dump($var);
}
?>

//类型提示

 <?php
class A{
public $name = 'a';
public function say(){
echo 'I am ',$this->name;
}
}
class B{
//类型提示
public function say(A $A){
return $A->say();
}
}
class C{}
$A = new A();
$B = new B();
$B->say($A); //I am a
$B->say(new C()); //报错 Argument 1 passed to B::say() must be an instance of A, instance of C given
?>

静态方法和属性
static关键字是在php 5才引入的。
静态方法是以类为作用域的函数,不能访问这个类中的普通属性,因为普通属性属于一个对象,但可访问静态属性。

 <?php
class A{
static public $msg='hello';
static function say(){
return self::$msg;
}
}
class B extends A{
static public $msg = 'world';
static function say(){
return parent::say().' '.self::$msg;
}
}
echo B::say(); //hello world
?>

常量:类访问,声明时无需$符,且值不可改

 <?php
//类访问,声明时无需$符,且值不可改
class A{
const PI = 3.14;
public function test(){
//self::PI = 3.15; //报错
return self::PI;
}
}
$a = new A();
echo $a::PI; //3.14
echo $a->test(); //3.14
?>

抽象类:PHP 5引入,不能被实例化,只定义或部分实现子类需要的方法。子类继承并实现其中的抽象方法,使抽象类具体化。

 <?php
abstract class A{
protected $name;
public function sing(){ }
abstract public function eat(); //以分号结束
}
//$a = new A(); //Cannot instantiate abstract class A class dog extends A{
// Class dog contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (A::eat)
}
?>

多数情况下,抽象类至少包含一个抽象方法,其中不能有具体内容。如下:

  abstrac function test();

抽象类的每个子类都必须实现抽象类中的所有抽象方法。新的实现方法的访问控制权限不能比抽象方法严格,参数个数也要一致。

原文博客地址:http://www.cnblogs.com/lltong/

最新文章

  1. Ping!
  2. 代码重构-2 简单不变的 if else 用字典代替
  3. aggregations 详解1(概述)
  4. Android 连接tomcat模拟登陆账号
  5. (转)在javascript中关于submit和button提交表单区别
  6. uva10829 L-Gap Substrings
  7. C数组的相关知识
  8. 学会WCF之试错法——数据传输
  9. Confluence 6 推荐的更新通知设置和禁用
  10. jquery easyui datagrid 将值作为img显示图片时报404 undefined
  11. Sqluldr2 libclntsh.so报错处理
  12. 2019.02.17 spoj Query on a tree V(链分治)
  13. 细谈 Web Api 图片上传,在使用 Task.ContinueWith 变量无法赋值问题的解决办法!
  14. java字符串的替换
  15. tac命令详解
  16. socket.io插件调用的demo
  17. ios 第3天
  18. careercup-扩展性和存储限制10.4
  19. 最新Altium_Designer_Beta_18.7.is AD18安装教程及破解说明
  20. Delphi XE8中开发DataSnap程序常见问题和解决方法 (-)启动创建好的DBExpress工程时候报错了!

热门文章

  1. Neutron Messaging Callback System
  2. 常见SQL函数需要注意的细节
  3. invalid constant type: 18
  4. 普林斯顿算法(1.3)并查集(union-find算法)——本质就是一个数 下面的子树代表了连在一起的点
  5. 自定义EL函数、自定义JSTL标签
  6. JavaUtil_07_HttpUtil_使用Hutool 封装的 HttpUtil
  7. MySQL--开发技巧(一)
  8. listen and translation exercise 49
  9. Debian for ARM
  10. Arc076_E Connected?