搜索
首页后端开发php教程分享php中一些常用的方法知识

分享php中一些常用的方法知识

Jun 23, 2017 pm 03:20 PM
php抽象方法静态

 

  前  言

 OOP 

  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)。

 

1  PHP中的抽象类与抽象方法
   
     1、什么是抽象方法?
              没有方法体 {} 的方法,必须使用abstract 关键字修饰。这样的方,我们叫做抽象方法。
                    abstract function say(); //    抽象方法

          2、什么是抽象类?
           包含抽象方法的类就叫抽象类。抽象类必须使用abstract关键字修饰。
                  abstract class Person{}

          3、抽象类的注意事项
                ①    抽象类可以包含非抽象方法;
                ② 包含抽象方法的类,一定是抽象类;
                    抽象类,并不一定必须包含抽象方法;
                ③ 抽象类,不能实例化。
                  (抽象类中可能包含抽象方法,抽象方法没有方法体,实例化调用没有意义。)
               
                   我们使用抽象类的目的!就是限制实例化!!!        

          4、 子类继承抽象类,那么子类必须重写父类的所有抽象方法。除非子类也是抽象类。
         
          5、使用抽象类的作用?
              ① 限制实例化。(抽象类是一个不完整的类,里面的抽象方法没有方法体,所以不能实例化)
              ② 抽象类为子类的继承提供一种规范。子类继承一个抽象类,则必须包含并且实现抽象类中已定的抽象方法。
         
         

 

2  静态属性和静态方法
  
     1、static
              ① 可以修饰属性和方法,分别称为静态属性、静态方法,也叫类属性、类方法;
              ② 静态属性、静态方法,只能使用类名直接调用。
                  使用"类名::$静态属性" 、 "类名::静态方法()"
                  Person::$sex;  Person::say();
              ③ 静态属性、方法,在类装载时就会声明。先于对象产生;
              ④ 静态方法中,不能调用非静态属性或方法;
                非静态方法,可以调用静态属性或方法;    
              (因为静态属性和方法在类装载时就已经产生,而非静态的属性方法、此时还没有实例化诞生)
              ⑤ 在类中,可以使用self关键字,代指类名。
                  class Person{
                  static $sex = "nan";
                  function say(){
                      echo self::$sex;
                      }
                  }
              ⑥ 静态属性是共享的。也就是new很多对象也是共用一个属性。

   2、final
          ① final 修饰类,此类为最终类,不能被继承;
          ② final    修饰方法,此方法为最终方法,不能被重写!
          ③ final 不能修饰属性。
     
      3、const关键字;
            在类中声明常量,不能使用define()函数!必须使用const关键字。
           与define()声明类似,const关键字声明常量不能带$,必须全部大写!
           常量一旦声明,不能改变。调用时与static一样,使用类名帝爱用 Person::常量。
     
      【小总结】  几种特殊操作符
      1、 .      只能连接字符串; "".""
      2、 => 声明数组是,关联键与值["key"=>"value"]
      3、 -> 对象($this new出的对象)低啊用成员属性、成员方法。
      4、  : :  ① 使用parent关键字,调用父类中的同名方法;parent::say();
                ② 使用类名(和self)调用类中的静态属性、静态方法、以及常量。
     
     
         

 

3  PHP中的单利模式(单态模式)
   
   单利模式也叫单态模式
     
     
       可以保证,一个类只能有一个对象实例。
     
       实现要点:
            ① 构造函数私有化,不允许使用new关键字创建对象。
            ② 对外提供获取对象的方法。在方法中判断对象是否为空,如果为空则创建对象并返回,如果不为空直接放回,
          ③ 实例对象的属性以及过去对象的方法必须都是静态的。
            ④ 之后,创建对象只能使用我们提供的静态方法。      $s1 = Singleton::getSingle();
            
         

 

 1 class Singleton{ 2         private static $single=null; 3         private function __construct(){} 4         static function getSingle(){ 5             if(!self::$single){ 6                 self::$single = new self(); 7             } 8             return self::$single; 9         }10         function __destruct(){11             echo "啊,我被销毁了。";12         }13     }14     15     $s1 = Singleton::getSingle();16     $s2 = Singleton::getSingle();17     $s3 = Singleton::getSingle();18     $s4 = Singleton::getSingle();
单利模式简单的代码

 

 

4  串行化与反串行化(序列化与反序列化)
   
            1、串行化:将对象通过一系列操作,转化为一个字符串你的过程,称为串行化;
              2、反串行化:将串行化后的字符串,再转为对象的过程,称为反串行化;
              3、什么时候使用串行化?
                  ① 对象需要在网络中传输的时候;
                  ② 对象需要在文件或者数据库中持久保存的时候;
              4、怎么实现对象串行化与反串行化?
              串行化: $str = serialize($duixiang);
              反串行化: $duixiang = unserialize($str);
              5、__sleep()魔术方法:
                  ① 当执行对象串行化的时候,会自动执行__sleep()函数;
                  ② __sleep()函数要求返回一个数组,数组中的值,就是可以串行化的属性;不在数组中的属性,不能被串行化;
                  function __sleep(){
                  return array("name","age");//只有name/age两个属性可以串行化
                  }
              6、__wakeup()魔术方法:
                  ① 当反串行化对象时,自动调用__wakeup()方法;
                  ② 自动调用时,用于给反串行化产生的新对象属性,进行重新复制;
                  function __wakeup(){
                      $this->name = "李四";
        

 

5  约束类型 
   
    1、类型约束:是指在变量前,加上数据类型,用于约束此变量只能存放对应的数据类型.(这种操作常见于强类型语言,在PHP中,只能实现数组和对象的类型约束)
      2、如果类型约束为某一个类,则本类以及本类的子类对象,都可以通过;
     
      3、在PHP中,类型约束,只能发生在函数的形参中。
          class Person{}
          class Student extend
      
       function func(Person $p){
              //约束函数的参数,只接受Person类及Person子类
             echo "111";
             echo $p->name;
             }
          func(new Person()); √
          func(new Student()); √
       func("111");    ×
     
          形如 new Person();的形式,我们称其为“匿名函数”;
    
         

 

6  魔术方法小总结
   
  1、__construct(): 构造函数,new一个对象时,自动调用
      2、__destruct(): 析构函数,当一个对象被销毁前,自动调用
      3、__get():访问类中私有属性时,自动调用。传递读取的属性名,返回$this->属性名
      4、__set():给类的私有属性赋值时,自动调用。传递需要设置的属性名和属性值
      5、__isset():使用isset()检测对象私有属性时,自动调用。传递检测的属性名,返回isset($this->属性名);
      6、__unset():使用unset()删除对象私有属性时,自动调用。传递删除的属性名,方法中执行unset($this->属性名);
      7、__toString():使用echo打印对象时,自动调用。返回想要打印对象时,现实内容;返回必须是字符串;
      8、__call():调用一个类中未定义或未公开的方法时,自动调用。传递被调用的函数名,和参数列表数组;
      9、__clone():当使用clone关键字,克隆一个对象时,自动调用。作用是为新克隆的对象进行初始化复制;
      10、__sleep():对象序列化时,自动调用。返回一个数组,数组中的值就是可以序列化的属性。
      11、__wakeup():对象反系列化时,自动调用。为反序列化新产生的对象,进行初始化复制;
      12、__autoload():需要在类外部声明函数。当实例化一个为生命的类时,自动调用。传递实例化的类名,可以使用类名自动加载对应的类文件。
    
     

 

 

 

学习时候的笔记,可能会有一些错误的地方,欢迎各位的批评指点。

反思,复盘,每天收获一点---------------------期待更好的自己

以上是分享php中一些常用的方法知识的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
优化PHP代码:减少内存使用和执行时间优化PHP代码:减少内存使用和执行时间May 10, 2025 am 12:04 AM

TOOPTIMIZEPHPCODEFORDUSEMEMORYUSAGEAGEAGEAGEAGEAGEANDEXECUTITIEM,关注台词:1)USEREEREFERESCENCENCINCOPYINSTEADOFCOPYINGINATATASTRUCTURESTROUCTURESTOREDUCEMORYCONSUMPTION.2)杠杆phphppphpphp'sbuilt intimpunctionslikearray_mapforfunctionslikearray_mapforfforfforfforfasterapasterexecution.3)

PHP电子邮件:分步发送指南PHP电子邮件:分步发送指南May 09, 2025 am 12:14 AM

phpisusedforsendendemailsduetoitsignegrationwithservermailservicesand andexternalsmtpproviders,自动化notifications andMarketingCampaigns.1)设置设置yourphpenvironcormentswironmentswithaweberswithawebserverserverserverandphp,确保themailfunctionisenabled.2)useabasicscruct

如何通过PHP发送电子邮件:示例和代码如何通过PHP发送电子邮件:示例和代码May 09, 2025 am 12:13 AM

发送电子邮件的最佳方法是使用PHPMailer库。1)使用mail()函数简单但不可靠,可能导致邮件进入垃圾邮件或无法送达。2)PHPMailer提供更好的控制和可靠性,支持HTML邮件、附件和SMTP认证。3)确保正确配置SMTP设置并使用加密(如STARTTLS或SSL/TLS)以增强安全性。4)对于大量邮件,考虑使用邮件队列系统来优化性能。

高级PHP电子邮件:自定义标题和功能高级PHP电子邮件:自定义标题和功能May 09, 2025 am 12:13 AM

CustomHeadersheadersandAdvancedFeaturesInphpeMailenHanceFunctionalityAndreliability.1)CustomHeadersheadersheadersaddmetadatatatatataatafortrackingandCategorization.2)htmlemailsallowformattingandttinganditive.3)attachmentscanmentscanmentscanbesmentscanbestmentscanbesentscanbesentingslibrarieslibrarieslibrariesliblarikelikephpmailer.4)smtppapapairatienticationaltication enterticationallimpr

使用PHP和SMTP发送电子邮件的指南使用PHP和SMTP发送电子邮件的指南May 09, 2025 am 12:06 AM

使用PHP和SMTP发送邮件可以通过PHPMailer库实现。1)安装并配置PHPMailer,2)设置SMTP服务器细节,3)定义邮件内容,4)发送邮件并处理错误。使用此方法可以确保邮件的可靠性和安全性。

使用PHP发送电子邮件的最佳方法是什么?使用PHP发送电子邮件的最佳方法是什么?May 08, 2025 am 12:21 AM

ThebestapproachforsendingemailsinPHPisusingthePHPMailerlibraryduetoitsreliability,featurerichness,andeaseofuse.PHPMailersupportsSMTP,providesdetailederrorhandling,allowssendingHTMLandplaintextemails,supportsattachments,andenhancessecurity.Foroptimalu

PHP中依赖注入的最佳实践PHP中依赖注入的最佳实践May 08, 2025 am 12:21 AM

使用依赖注入(DI)的原因是它促进了代码的松耦合、可测试性和可维护性。1)使用构造函数注入依赖,2)避免使用服务定位器,3)利用依赖注入容器管理依赖,4)通过注入依赖提高测试性,5)避免过度注入依赖,6)考虑DI对性能的影响。

PHP性能调整技巧和技巧PHP性能调整技巧和技巧May 08, 2025 am 12:20 AM

phperformancetuningiscialbecapeitenhancesspeedandeffice,whatevitalforwebapplications.1)cachingwithapcureduccureducesdatabaseloadprovesrovesponsemetimes.2)优化

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器