• php基础:面向对象


    一、public、private、protected访问修饰符

      public:任何都可以访问(本类、子类、外部都可以访问)

      protected:本类、子类都可以访问(本类、子类均可访问)

      private:本类可以访问,其他均不可访问

    二、构造函数、析构函数

      1. __construce()

      2. __destruct():注销一个对象

    三、接口interface

      接口:php类是单继承的,不支持多继承,当一个类需要多个类的功能时,php类就无能为力,所以引入接口;什么是接口:如果一个抽象类里边的所有方法都是抽象方法,并且所有方法声明的关键字都是public,并且没有声明变量,这种类就是抽象类

      关键字:interface来定义接口,使用implemens来实现接口的方法,必须全部实现

    三、instanceof检查"是一"关系,如下代码:

    <?php
    interface ExampleInterface
    {
        public function interfaceMethod();
    
        public function play();
    }
    
     class ExampleClass implements ExampleInterface
     {
         public function interfaceMethod()
         {
             return 'Hello World!';
         }
    
         public function play()
         {
             return 'This is a num';
         }
     }
    
        $exampleInstance = new ExampleClass();
    
     if($exampleInstance instanceof ExampleInterface){
         echo 'Yes, it is';
     }else{
         echo 'No, it is not';
     }

      以上代码输出的结果是:Yes, it is,为什么呢?ExampleClass它使用了关键字implements实现了ExampleInterface,所有他们是"是一"关系

    四、final关键字

      1.允许你用来标记方法,但是不能被子类重载(就是说再子类中不能重新书写标记final的方法)

    class TestClass
    {
        final function play()
        {
            return 'This is a num';
        }
    }
    
    class TestTwo extends TestClass
    {
        public function play()
        {
            return 'This is a 222222';
        }
    }
    
    $test = new TestTwo();
    echo $test->play();

      上边代码提示:Fatal error: Cannot override final method TestClass::play()

      2.final用来标记一个类时,该类就不能被继承

    五、clone:克隆对象,在使用对象的时候开业克隆一个

    六、const 关键字声明类的常量(调用时不需要实例化对象,直接调用):

    <?php
    class TestClass
    {
        const NAME = 'zgw2014';
        const AGE = 'zgw2014';
    }
    
    echo TestClass::AGE;

    七:静态属性关键字:static

      1.静态方法:

    class TestClass
    {
       static function helloworld()
       {
           return '哈哈哈哈哈哈';
       }
    }
    
    echo TestClass::helloworld();

      2. 静态成员,类的定义包含现静态成员属性,开业通过类自身访问,不需要实例化对象,;通常用的最多的就是单利模式(单件模式) 

    class TestClass
    {
        static private $instance = NULL;
    
        static public function getInstance()
        {
            if(self::$instance == NULL)
            {
                self::$instance = new DB();
            }
    
            return self::$instance;
        }
    }
    
    class DB
    {
        public function play()
        {
            return '单利';
        }
    }
    
    $obj = TestClass::getInstance();
    echo $obj->play();

    八:抽象类abstract

      1.抽象类:把类声明成为一个抽象类,可以防止被实例化,但是你可以继承一个抽象类

    abstract class TestClass
    {
        public function getInstance()
        {
            return 'get getInstance';
        }
    }
    
    $obj = new TestClass();
    echo $obj->getInstance();

      上边的代码运行会提示:Fatal error: Uncaught Error: Cannot instantiate abstract class TestClass

      2.抽象方法:定义一个抽象方法以便在子类中再取重新定义实现,包含有抽象方法的类本身必须是抽象类

    九 、自动加载:__autoload

    function __autoload($className)
    {
        $classPath = './'.$className.'.php';
        if(file_exists($classPath))
        {
            require_once $classPath;
        }else{
            echo 'class file'.$classPath.'not found!';;
        }
    }
    
    $obj1 = new ClassA();
    $obj2 = new ClassB();

      上边代码的前提是在你设置的class路径里边必须有你实例化的类名的同名文件才行,也就是实例对象的文件名和类名一致才行

    十、异常捕获机制 try{}catch(){}

    function myErrorHandler($errno, $errstr, $errfile, $errline)
    {
        throw new Exception($errno.'###'.$errstr.'###'.$errfile.'###'.$errline, 1);
    }
    set_error_handler('myErrorHandler');
    try{
        $db = new mysqli('localhost','root','1111');
        var_dump($db);
    }catch(Exception $e){
        echo $e->getMessage();
    }

      以上代码 设置用户自定义的错误处理函数

    小技巧:

      1.开启php的短标签:short_open_tag = On (开启后可以使用<? 代替<?php)

      2.php的三种注释:

        c语言注释:/***/

        c++注释://

        shell注释:#

      3.

  • 相关阅读:
    pip3 install的时候报错timed out
    小程序经验
    require()  module.export    Object.keys()
    canvas
    弹框时出现灰色背景
    template模板的使用方法
    javascript中array常用属性方法
    封装数据请求
    wx 参数传值
    ELF文件格式分析
  • 原文地址:https://www.cnblogs.com/zengguowang/p/7458987.html
Copyright © 2020-2023  润新知