zoukankan      html  css  js  c++  java
  • php面向对象方法

    php面向对象之静态方法使用

    什么是静态方法?

    不是所有的变量和方法都要通过创建对象来调用。可以通过给变量和方法加上static关键字来直接调用。

    调用静态成员的语法格式为:

    关键字::静态成员

    关键字可以是:

    (1)self,在类内部调用静态成员时所使用。

    (2)静态成员所在的类名,在类外调用类内部的静态成员时所使用。

    注意:在静态方法中,只能调用静态变量,而不能调用普通变量;而普通方法则可以调用静态变量。

    <?php
    class Math{
        //静态方法计算平方
        static function squared($input){
            return $input*$input;
        }
    }
    echo Math::squared(3);

    运行结果为:9

    上面是个简单的实例,值得注意的是,在静态方法中,不能使用$this关键字,因为可能会没有可以引用的对象实例。因为静态方法可以不需要实例化对象。

    使用静态成员,除了可以不需要实例化对象外,另一个作用就是在对象被销毁后,仍然保存被修改的静态数据,以便下次继续使用。这个概念比较抽象,下面举个例子具体分析。

    <?php
    
    class Play{
        static $num = 0;
        function showNum(){
            echo 'num is :'.self::$num;
            self::$num++;
        }
    }
    $play1 = new Play();
    $play1->showNum();
    echo '<br>';
    
    $play2 = new Play();
    $play2->showNum();
    echo '<br>';
    
    echo 'num is :'.Play::$num;

    注意事项:

    静态方法很好用,不用实例化对象,当类第一次加载的时候就已经给了静态成员空间。但是什么东西都是不能滥用的。因为一旦静态成员声明的过多,空间一直被占用着,那么会影响系统的运行速度和功能,所以切记:东西虽好,可不能贪多哦!

    php面向对象:成员方法、成员变量、类的常量

    定义一个人的类,创建一个跑的成员方法

    <?php
    
    class Person{
        //定义成员变量
        public $name;
        public $age;
        public $gender;
        public function run(){
            echo '人在塔在';
        }
    }
    
    $person = new Person();
    $person->name = '德玛西亚';
    $person->run();

    类中有变量,那么相对的也就是会有常量。常量的意思就是不会改变的量,是一个恒值。

    定义常量,我们用const。

    <?php
    
    class Person{
        public $name;//声明一个变量
        const SKILLS = '哈撒尅';//声明一个常量
        public function run(){
            echo '人在塔在';
        }
    }
    
    $person = new Person();
    $person->name = '亚索';
    echo '<br>';
    
    $person->run();
    echo '<br>';
    
    echo '我是'.$person->name;
    echo '<br>';
    
    echo '我的技能是:'.$person::SKILLS;

    php面向对象之构造函数作用与方法

    构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。

    构造函数的作用就是用来初始化对象的。该方法可以没有参数,也可以有多个参数。定义构造函数也很简单,__construct(),值得注意的是函数construct前面是两个下划线"_".

    <?php
    
    class Person{
        public $name;
        public $height;
    
        function __construct($name,$height){
            $this->name = $name;
            $this->height = $height;
        }
    
        public function play(){
            if($this->height>175){
                return $this->name.'可以打篮球';
            }else{
                return $this->name.'不可以打篮球';
            }
        }
    }
    
    $person = new Person('cyy','168');
    echo $person->play();

     构造方法是初始化对象时使用的,如果没有构造方法,那么PHP会自动生成一个。自动生成的构造方法没有任何参数,没有任何操作。

    php面向对象之析构函数的作用与用法

    析构函数的作用和构造函数的作用正好相反,是对象被销毁时被调用,作用是释放内存。定义析构函数的格式为:__destruct(),和构造函数一样的是,前面也是两个下划线"_"。

    <?php
    
    class Person{
        public $name;
        public $height;
    
        function __construct($name,$height){
            $this->name = $name;
            $this->height = $height;
        }
    
        function __destruct(){
            echo '对象被销毁了';
        }
    
        public function play(){
            if($this->height>175){
                return $this->name.'可以打篮球';
            }else{
                return $this->name.'不可以打篮球';
            }
        }
    }
    
    $person = new Person('cyy','168');
    echo $person->play();
    echo '<br>';

    析构函数使用注意事项:

    php使用的是一种“垃圾回收”机制,自动清除不再使用的对象,释放内存,就是说即使不使用unset函数,析构方法也会自动被调用,这里只是明确一下析构函数在何时被调用。一般情况下是不需要手动创建析构方法的。

  • 相关阅读:
    教程:在 Visual Studio 中开始使用 Flask Web 框架
    教程:Visual Studio 中的 Django Web 框架入门
    vs2017下发现解决python运行出现‘No module named "XXX""的解决办法
    《sqlite权威指南》读书笔记 (一)
    SQL Server手工插入标识列
    hdu 3729 I'm Telling the Truth 二分图匹配
    HDU 3065 AC自动机 裸题
    hdu 3720 Arranging Your Team 枚举
    virtualbox 虚拟3台虚拟机搭建hadoop集群
    sqlserver 数据行统计,秒查语句
  • 原文地址:https://www.cnblogs.com/chenyingying0/p/12895471.html
Copyright © 2011-2022 走看看