好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php数组 类和对象 接口使用方法 - php高级应用

php数组 类和对象 接口使用方法

1. 数组

php的数组其实是一个关联数组,或者说是哈希表,php不需要预先声明数组的大小,可以用直接赋值的方式来创建数组,例如:

//最传统,用数字做键,赋值   $state [0]= "beijing" ;   $state [1]= "hebei" ;   $state [2]= "tianjin" ;  //如果键是递增的数字,则可以省略   $city []= "shanghai" ;   $city []= "tianjin" ;   $city []= "guangzhou" ;  //用字符串做键   $capital [ "china" ]= "beijing" ;   $capital [ "japan" ]= "tokyo" ; 

用array()来创建数组会更加方便一点,可以将数组元素作为array的参数传递给他,也可以用=>运算符创建关联数组,例如:

$p = array (1,3,5,7);  $capital = array ([china]=>]beijing], [japan=>]tokyo]); 

array其实是一种语法结构,而不是函数,和array类似,还有一个list(),它可以用来提取数组中的值,并给多个变量赋值,例如:

list( $s , $t )= $city ;   echo   $s , ' ' , $t ; 

输出结果:shanghai tianjin

注意,list方法只能用于由数字索引的数组.

php内建了一些常用的数组处理函数,具体可以参考手册,常用的函数举例如下,count或者sizeof可以得到数组的长度,array_merge 可以合并两个,或者多个数组,array_push(pop)可以像堆栈一样使用数组.

<?php           $state [0]= "beijing" ;           $state [1]= "hebei" ;           $state [2]= "tianjin" ;           $city []= "shanghai" ;           $city []= "tianjin" ;           $city []= "guangzhou" ;           $capital [ "china" ]= "beijing" ;           $capital [ "japan" ]= "tokyo" ;                     echo   count ( $city ), '<br/>' ;            array_push ( $capital , "paris" );           $newarray = array_merge ( $city , $capital );           foreach ( $newarray   as   $elem )           //开源代码phpfensi测试数据                echo   $elem .’<br/>’;       ?>  //输出结果为:   //3    //shanghai    //tianjin    //guangzhou    //beijing    //tokyo    //paris  

2. 类和对象

php5开始对面向对象编程有了很好的支持,php中的类的概念和其他面向对象的语言比如c#是十分相似的,它也是一个值和方法的聚合体,使用class关键字定义,例如:

<?php         class  authuser {             protected   $username ;             protected   $password ;             public   function    __construct( $username , $password ) {                 $this ->username= $username ;                 $this ->password= $password ;            }             public   function  getusername() {                 return   $username ;            }             public   function  changepassword( $old , $new ) {                                 if ( $this ->password== $old ) {                     $this ->password= $new ;                     return  true;                } else                      return  false;            }             public   function  login( $password ) {                 return   $this ->password== $password ;            }             public   static   function  createuser( $username , $password ) {                 $user = new  authuser( $username , $password );                 return   $user ;            }        }         $user =authuser::createuser( "admin" , "123" );         echo   $user ->getusername();         if ( $user ->changepassword( 'abc' ,  'new' ))             echo   'changepassword success' ;         else              echo   'change password fail' ;         $user ->changepassword( "123" ,  "321" );         if ( $user ->login( "321" ))             echo   "login" ;         else              echo   "login fail" ;        ?> 

上面是一个虽然没有什么用但是语法结构上较为完整的类,首先使用class关键字定义类的名字,内部可以定义字段和方法,字段和方法的修饰词可以是private,protected,public 和 final,仅方法有,其含义和其它语言一致,不再赘述,不同的地方在于,php不支持函数的重载,另外,php5的构造函数的定义是__construct,注意前缀是两个下划线。php4的构造函数的定义和其它语言一致,是和类名一样的函数,php5也兼容这种写法。php5还支持析构函数,名字是__destruct,在函数内部,可以使用$this变量来获得当前对象的引用,php也支持静态函数,同样是使用static关键字修饰,示例中最后一个函数就静态函数,静态函数不能通过类的实例引用.

类的定义下面是使用类的代码示例,php也是通过new关键字来实例化一个类,通过->运算符来引用对象的方法,注意其静态类的引用方法是::,这是和c++一致的.

下面再简单介绍下类的继承,php中使用extends关键字来实现类的继承,这是和java一致的,实例代码如下:

<?php           class  baseclass {               function  __construct() {                  print  "in baseclass constructorn" ;              }          }           class  subclass  extends  baseclass {               function  __construct() {                  parent::__construct();                  print  "in subclass constructorn" ;              }          }                   $obj  =  new  baseclass();           $obj  =  new  subclass();  ?>  //输出的结果是: in baseclass constructor in baseclass constructor in subclass constructor  

要注意,php的子类的构造函数不会自动调用父类的构造函数,必须在程序中显式地调用,使用parent关键字可以得到父类的引用,另外,由于php本身是弱类型的,所以[多态[的概念也不存在了,实际上,它永远都是多态的.

接口: 接口定义了一组方法,但不实现他们,其语法为:

interface   iinterfacename  {      //常量、函数定义    } 

类利用implements关键字来表面实现某个接口,这和java是一致的.

<?php      interface  iaddable{         function  add( $something );     }      class  addclass  implements  iaddable     {          private   $data ;          function  addclass( $num ){              $data = $num ;         }          public   function  add( $something )         {              $data += $something ;              return   $data ;         }     }      $a = new  addclass (5);      echo   $a  instanceof iaddable;      echo   $a ->add(10);  ?> 

查看更多关于php数组 类和对象 接口使用方法 - php高级应用的详细内容...

  阅读:35次