Rumah pembangunan bahagian belakang tutorial php 分享php中一些常用的方法知识

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

Jun 23, 2017 pm 03:20 PM
php abstrak kaedah statik

 

  前  言

 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();
Salin selepas log masuk
单利模式简单的代码

 

 

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():需要在类外部声明函数。当实例化一个为生命的类时,自动调用。传递实例化的类名,可以使用类名自动加载对应的类文件。
    
     

 

 

 

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

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

Atas ialah kandungan terperinci 分享php中一些常用的方法知识. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Konfigurasi Projek CakePHP Konfigurasi Projek CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan memahami Pembolehubah Persekitaran, Konfigurasi Umum, Konfigurasi Pangkalan Data dan Konfigurasi E-mel dalam CakePHP.

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

CakePHP Bekerja dengan Pangkalan Data CakePHP Bekerja dengan Pangkalan Data Sep 10, 2024 pm 05:25 PM

Bekerja dengan pangkalan data dalam CakePHP adalah sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Kemas Kini, Padam) dalam bab ini.

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Penghalaan CakePHP Penghalaan CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

See all articles