const:
<?php //const是一个在'类'中定义常量的关键字,php中定义常量使用define(),但类里面定义常量是const //语法: //const CONSTANT ='constantvalue';//定义 //echo self::CONSTANT; //类内部访问 //echo className::CONSTANT;//类外部访问 class demo{ //常量定义时就要赋初始值 //常量一旦定义就不能修改 //如果是多个单词组成的常量名要用下划线分隔 const HOST ='172.0.0.1'; const DB_NAME ='fuyan'; public function getConst(){ //在类的内部访问常量self::常量名 return self::DB_NAME; } } //在类的外部访问常量 类名::常量名 echo demo::HOST; echo "<hr />"; $demo = new demo(); echo $demo->getConst(); //输出 :172.0.0.1 //------------------------------ //fuyan ?>
file:
<?php /*文件处理*/ /*使用价值 :用户交互(比如头像) 临时数据储存(身份信息等) 日志记录(***作记录等) 备份文件*/ /*实际应用 :QQ相册 数据库备份 商品图 各种其他的文件交互*/ /*知识点 :用户上传文件 PHP接受文件 PHP自己创建文件 文件处理*/ /*用户上传文件 1.上传文件是一个前端后台的交互 2.需要前端的配合 3.提交数据需要表单 4.enctype="multipart/form-data"//2进制 5.<input type = 'file' name='用来区别不同输入框的name' /> */ header("content-type:text/html;charset=utf-8;"); print_r($_FILES['file']); //$_FILES['file']['name'] 文件名 //$_FILES['file']['type'] 文件类型 //$_FILES['file']['tmp_name'] 临时文件名 //$_FILES['file']['error'] 错误信息 //$_FILES['file']['size'] 文件大小 if ($_FILES['file']['type'] != 'image/jpeg'){ echo '文件类型不对'; }else{ echo '文件类型正确'; } move_uploaded_file($_FILES['file']['tmp_name'],'ceshi.jpeg');//保存到'ceshi.jpeg' ?>
final :
<?php //final修饰的类是最终的类,不能被继承,final修饰的成员方法是最终版本的方法,不能被重写 //final 关键字:不能被继承,不能重写 class demo{ public function say(){ echo "demo say"; } } class demo1 extends demo{ } $d1=new demo1(); $d1->say(); //输出 demo say ?> <?php final class demo{ public function say(){ echo "demo say"; } } class demo1 extends demo{ } $d1=new demo1(); $d1->say();//报错,final不能被继承 ?> <?php class demo{ final public function say(){ echo "demo say"; } } class demo1 extends demo{ } $d1=new demo1(); $d1->say();//输出 demo say ?> <?php class demo{ final public function say(){ echo "demo say"; } } class demo1 extends demo{ public function say(){ echo "demo1 say"; } } $d1=new demo1(); $d1->say();//报错,final不能被重写 ?>
goto :
<?php goto a; echo "Foo"; a: echo "Bar"; //输出 Bar ?> <?php for($i=0,$j=50;$i<100;$i++){ while($j--){ if($j==17)goto end; } } echo "i=$i"; end: echo "j hit 17"; ?>
instanceof :
<?php //instanceof关键字:检测一个对象是否由一个类或这个类的子类实例化来的 class demo{ } class demo1 extends demo{ } $demo = new demo(); $demo1 = new demo1(); var_dump($demo instanceof demo); var_dump($demo1 instanceof demo1); var_dump($demo instanceof demo1); var_dump($demo1 instanceof demo); /*输出: boolean true boolean true boolean false boolean true */ ?>
list :
<?php function small_numbers() { return array (0, 1, 2); } list ($zero, $one, $two) = small_numbers();//把数组中的值赋给一些变量 echo $zero; ?> <table> <tr> <th>Employee name</th> <th>Salary</th> </tr> <?php $result = mysql_query("SELECT id, name, salary FROM employees", $conn); while (list($id, $name, $salary) = mysql_fetch_row($result)) { echo " <tr>\n" . " <td><a href=\"info.php?id=$id\">$name</a></td>\n" . " <td>$salary</td>\n" . " </tr>\n"; } ?> </table> <?php //使用嵌套的 list() list($a,list($b,$c))=array(1,array(2,3)); var_dump($a,$b,$c); //int(1) int(2) int(3) ?> <?php //list() 中使用数组索引 $info = array('coffee','brown','caffeine'); list($a[0],$a[1],$a[2])=$info; var_dump($a); //产生如下输出(注意单元顺序和 list() 语法中所写的顺序的比较): //array(3) { //[2]=> //string(8) "caffeine" //[1]=> //string(5) "brown" //[0]=> //string(6) "coffee" //} /*list() 从最右边一个参数开始赋值。如果你用单纯的变量,不用担心这一点。 但是如果你用了具有索引的数组,通常你期望得到的结果和在 list() 中写的一样是从左到右的,但实际上不是。 它是以相反顺序赋值的。 Warning 在 list() 执行过程中修改数组(比如使用 list($a, $b) = $b)将会产生不可预知的结果。 Note: list() 仅能用于数字索引的数组并假定数字索引从 0 开始。 */ ?>
static :
<?php //static修饰类的成员属性和成员方法(就是静态属性,静态方法) //类中的静态属性和方法不用实例化new()就可以直接使用类名访问 //类::$静态属性 类::静态方法 //在类的方法中 不能用this来引用静态变量或静态方法,而需要用self来引用. self::$静态属性 self::静态方法 //静态方法中不可以使用非静态的内容,就是不让使用$this. //静态属性是共享的,也就是new很多对象也是共用一个属性 /*class demo{ static public $name = "zhangsan";//成员属性 static public function say(){ return $this-> name; } } echo demo::$name;*/ //输出:zhangsan 在类的外部访问静态的成员属性,类型::成员属性名 ?> <?php /*class demo{ static public $name = "zhangsan";//成员属性 static public function say(){ return self::$name;//在类的内部访问静态成员属性 self::成员属性名 } } echo demo::say();*/ //输出:zhangsan 在类的外部访问静态的成员方法,类型::成员方法名 ?> <?php class demo{ static public $num = 0; //静态的成员属性只能初始化一次,所有实例化的对象访问的都是同一个静态成员属性 public function __construct(){ self::$num++; } } $d1 = new demo(); echo "<br />"; echo demo::$num; $d2 = new demo(); echo "<br />"; echo demo::$num; //输出:1 2 ?>