php语法学习3(面向对象)

  1. php是面向对象开发语言,且php的面向对象的语法上和java及其类似,下面分几项对其进行整理总结。
  2. 面向对象的三个特性封装,继承,多态。
  3. 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对其权限检查不是编译时校验,是在执行的时候校验。
  4. php中类的继承:
    • 接口:interface,和java一致,声明接口声明方法,不需要实现,具体的实现由其具体的实现对象实现。和java也一致,其声明的方法权限都是public的。
    • 抽象类:和java一致,类中声明的方法可以部分实现,其实例对象必须实现其所有未实现的方法,其实现方法的权限和父类相同或者更为宽松,抽象类和抽象方法使用关键字abstract声明。
    • php中的子类对父类是单继承,对接口是多实现,继承使用关键字extends实现,实现试用关键字implements实现。
    • 子类对父类的继承,继承方法,也可以对父类的方法进行重写。
    • 子类中调用父类的方法的语法:parent::方法名,即父亲::方法名
  5. 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
         后面两个参数可以默认,只输入前面两个参数即可。
      
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354

推荐阅读更多精彩内容