- php是面向对象开发语言,且php的面向对象的语法上和java及其类似,下面分几项对其进行整理总结。
- 面向对象的三个特性封装,继承,多态。
- php中class的代码结构:
<?php class Site { //构造函数 function __construct( $par1, $par2 ) { $this->url = $par1; $this->title = $par2; } //析构函数 function __destruct() { print "销毁 " . $this->name . "\n"; } /* 成员变量 */ var $url; var $title; /* 成员函数 */ function setUrl($par){ $this->url = $par; } function getUrl(){ echo $this->url . PHP_EOL; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title . PHP_EOL; } } $runoob = new Site; $taobao = new Site; $google = new Site; // 调用成员函数,设置标题和URL $runoob->setTitle( "菜鸟教程" ); $taobao->setTitle( "淘宝" ); $google->setTitle( "Google 搜索" ); $runoob->setUrl( 'www.runoob.com' ); $taobao->setUrl( 'www.taobao.com' ); $google->setUrl( 'www.google.com' ); // 调用成员函数,获取标题和URL $runoob->getTitle(); $taobao->getTitle(); $google->getTitle(); $runoob->getUrl(); $taobao->getUrl(); $google->getUrl(); ?>
- php中类的定义和java及其类似,class 关键字,大括号包括属性和方法,且类中的属性和方法只能通过改类的实例对象访问,且受制于访问限制符的控制。
- 类中的属性使用关键字var进行声明,属性的语法符合php变量的语法结构。
- 在类中和java类似可以通过this指向当前的类。PHP_EOL 为换行符,类对象的创建也和java类似,通过new 关键字创建
- 类对象对类中的属性和方法的调用:$类对象 -> 属性/方法
- php的类存在构造函数和析构函数,构造函数用于创建对象且对对象的属性赋值,php没有声明构造方法则会自动创建默认的无参数构造方法。析构方法很多语言也会有是在类销毁的时候回调方法,可以处理一些回收的逻辑。
- class中可以定义常量:const ss = "xxxxx"
- php类中的属性和方法都受权限控制符控制,权限包括:public,private,protected三种,不像java,没有默认权限,其默认权限就是public。
- public:公共权限,都可以访问
- private:私有权限,仅当前类中可以访问
*protected:受保护的权限,当前类和其子类可以访问。 - final:此关键字和java一致,其声明属性和方法后续子类都不可以重写。
- var声明的属性默认public权限。
- 和java一致,php的calss也支持static关键字,使用其声明属性和方法,不需要实例类对象调用,可以通过类名直接调用属性和方法。
- 和java不同的是,php对其权限检查不是编译时校验,是在执行的时候校验。
- php中类的继承:
- 接口:interface,和java一致,声明接口声明方法,不需要实现,具体的实现由其具体的实现对象实现。和java也一致,其声明的方法权限都是public的。
- 抽象类:和java一致,类中声明的方法可以部分实现,其实例对象必须实现其所有未实现的方法,其实现方法的权限和父类相同或者更为宽松,抽象类和抽象方法使用关键字abstract声明。
- php中的子类对父类是单继承,对接口是多实现,继承使用关键字extends实现,实现试用关键字implements实现。
- 子类对父类的继承,继承方法,也可以对父类的方法进行重写。
- 子类中调用父类的方法的语法:parent::方法名,即父亲::方法名
- model类:类中非常实用和使用比较多的一种类型,通常声明model对象,类中声明对象属性和对象方法,在日常开发中model类和接口数据转换通常用到json(接口中json数据格式,model和json数据通常存在编码和解码)。
- php针对json及其方便,php5.3版本及其以上直接安装了json扩展,提供了json_encode和json_decode两个api实现对象和json数据的转换。
string json_encode ( $value [, $options = 0 ] ) 参数: $value: 需要转换为json数据的对象。 options:由以下常量组成的二进制掩码 JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR。要注意的是 JSON_UNESCAPED_UNICODE 选项,如果我们不希望中文被编码,可以添加该选项,第二个参数可以不指定(不涉及中文的时候)。 mixed json_decode ($json_string [,$assoc = false [, $depth = 512 [, $options = 0 ]]]) 参数: $json_string: 需要解码的json数据。 $assoc:当该参数为 TRUE 时,将返回数组,FALSE 时返回对象 $depth: 整数类型的参数,它指定递归深度 $options: 二进制掩码,目前只支持 JSON_BIGINT_AS_STRING 后面两个参数可以默认,只输入前面两个参数即可。
- php针对json及其方便,php5.3版本及其以上直接安装了json扩展,提供了json_encode和json_decode两个api实现对象和json数据的转换。
php语法学习3(面向对象)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- php基础语法整理:PHP 脚本以 <?php 开始,以 ?> 结束:php内部每一行代码以;结束php向浏览器的...