广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php如何使用静态方法
  • 432
分享到

php如何使用静态方法

2023-06-20 17:06:05 432人浏览 泡泡鱼
摘要

本篇内容介绍了“PHP如何使用静态方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在php中,通过static关键字修饰的成员方法被称为静

本篇内容介绍了“PHP如何使用静态方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

php中,通过static关键字修饰的成员方法被称为静态方法,调用静态方法可以使用“类名::静态方法()”语法,也可以直接实例化一个变量,然后使用“变量名->函数名”的方法调用。

教程操作环境:windows7系统、PHP7.1版,DELL G3电脑

在 PHP 中,通过 static 关键字修饰的成员属性和成员方法被称为静态属性和静态方法,这里可以将它们统称为静态成员,类中的静态成员与类中的一般成员不同,静态成员不会被实例化到对象中,也就是说我们不需要实例化一个类,就可以通过类来访问静态成员。

在类中声明静态变量很容易,我们可以在类的普通成员前加一个 static 关键字,就可以将这个普通成员变成静态成员了。这样一来,我们可以在不实例化类的情况下,直接访问类中的这些静态成员。访问静态成员的语法格式如下:

类名::$静态属性类名::静态方法()

其中::符号被称为范围解析操作符,用于访问静态成员、静态方法和常量,还可以用于覆盖类中的成员和方法。

或者直接实例化一个变量,然后使用“变量名->函数名”的方法调用。

由于静态方法不需要类的实例化就能够被调用,而普通方法和普通属性都必须先声明一个对象才可以访问,因此,在静态方法里面始终是不能使用普通方法和访问普通变量的。

关于静态方法要牢牢记住一点:“静态方法是属于整个类的。”

class Star{public static function getName($name){return '队员姓名'.$name;}}echo Star::getName('kate');  //队员姓名kate$star = new Star();echo $star->getName('jim');  //队员姓名jim

静态方法的优点:

(1)在代码的任何地方都可以用(假设可以访问该类);

(2)类的每个实例都可以访问类中定义的静态属性,可以利用静态属性来设置值,该值可以被类的所有对象使用;

(3)不需要实例对象就能访问静态属性或方法。

<?php$pdo = new PDO('mysql:host=localhost;dbname=mydb','root');  // 生成一个 PDO(PHP Data Object) 对象class ShopProduct{    private $title;             // 属性也称为成员变量,用来存放对象之间互不相同的数据    private $producerMainName;  // 所有的属性都设置为 private,不允许外部直接访问这些属性,然后提供方法来取得需要的值    private $producerFirstName;    protected $price;           // 阻止外面直接访问该属性,可以被子类访问    private $discount = 0;    private $id = 0;    // 创建对象时,构造方法会被自动调用,构造方法可以确保必要的属性设置,并完成任何需要准备的工作    public function __construct($title,$mainName,$firstName,$price){        $this->title = $title;      // 使用伪变量$this给每个变量赋值        $this->producerMainName = $mainName;        $this->producerFirstName = $firstName;        $this->price = $price;    }        public function getProducerFirstName()    {        return $this->producerFirstName;    }        public function getProducerMainName()    {        return $this->producerMainName;    }        public function setDiscount($num)    {        $this->discount = $num;    }        public function getDiscount()    {        return $this->discount;    }        public function getTitle()    {        return $this->title;    }        public function getPrice()    {        return ($this->price - $this->discount);    }        public function getProducer(){  // 方法让对象执行任务        return $this->producerMainName .' '. $this->producerFirstName;    }        public function getSummaryLine()    {        $base = "{$this->title} ( {$this->producerMainName},{$this->producerFirstName}) ";        return $base;    }        public function setId($id)    {        $this->id = $id;    }    // 根据查询数据的数据类型,返回特定类型的 ShopProduct 对象,这个方法没有使用任何实例的属性和方法,因此把它定义为一个静态方法(static),只要有一个有效的 PDO 对象,就可以在程序的任何地方调用这个方法。这个方法就像工厂一样,可以接受原始数据产生特定类型的对象。    public static function getInstance($id,PDO $pdo)    {        $stmt = $pdo -> prepare("SELECT * FROM products WHERE id=?");        $stmt -> execute(array($id));        $row = $stmt -> fetch();        if(empty($row)){            return null;        }        switch($row['type'])        {            case 'book' :                $product = new BookProduct($row['title'],$row['first_name'],$row['main_name'],$row['price'],$row['num_pages']);            break;            case 'cd' :                $product = new CdProduct($row['title'],$row['first_name'],$row['main_name'],$row['price'],$row['play_length']);            break;            default :                $product = new ShopProduct($row['title'],$row['first_name'],$row['main_name'],$row['price']);            break;        }        $product -> setId($row['id']);        $product -> setDiscount($row['discount']);        return $product;    }}// 若派生类没有定义构造方法,则它在实例化是会自动调用父类的构造方法。子类默认继承父类所有的 public 和 protected 方法,但不继承 private 方法和属性class BookProduct extends ShopProduct{    private $numPages;    // 每个子类在设置自己的属性前调用父类的构造方法,基类现在仅知道自己的数据,子类一般是父类的特列,应该避免告诉父类任何关于子类的消息。    public function __construct($title,$mainName,$firstName,$price,$numPages)    {        // parent 关键字可以在任何复写父类方法的方法中使用,通过在当前对象中调用父类的方法来拓展父类的功能 , 要应用一个类而不是对象的方法,使用 :: 而不是 ->        parent::__construct($title,$mainName,$firstName,$price);        $this -> numPages = $numPages;    }        public function getNumberOfPages()    {        return $this->numPages;    }        public function getSummaryLine()    {        $base = parent::getSummaryLine();        $base .= "page count - {$this->numPages}";        return $base;    }}class CdProduct extends ShopProduct{    private $playLength;    public function __construct($title,$mainName,$firstName,$price,$playLength)    {        parent::__construct($title,$mainName,$firstName,$price);        $this -> playLength = $playLength;    }        public function getPlayLength()    {        return $this -> playLength;    }        public function getSummaryLine()    {        $base = parent::getSummaryLine();        $base .= "playing time - {$this->playLength}";        return $base;    }}$product = ShopProduct::getInstance(1,$pdo);     // 该静态方法根据传入 id 的不同生成特定类型的对象if($product){    print "author : {$product -> getProducer()} </br>";              // author :Lun Xun    print "summary line: {$product -> getSummaryLine()}</br>";      // summary line: Kong Yiji ( Xun,Lun) page count - 200}

“php如何使用静态方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: php如何使用静态方法

本文链接: https://www.lsjlt.com/news/298694.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php如何使用静态方法
    本篇内容介绍了“php如何使用静态方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在php中,通过static关键字修饰的成员方法被称为静...
    99+
    2023-06-20
  • php中静态方法怎么访问非静态方法
    本篇内容主要讲解“php中静态方法怎么访问非静态方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php中静态方法怎么访问非静态方法”吧!PHP中静态方法可以访问非静态方法;可以先实例化对象,然...
    99+
    2023-06-29
  • C#中如何使用静态方法
    C#中如何使用静态方法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#静态方法使用中遇到的问题:在源码工程中几乎没有看到什么静态方法,但是在Ms的SQLHelper中几乎全部...
    99+
    2023-06-17
  • php为什么要使用静态方法
    本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑。php为什么要使用静态方法静态方法不需要所在类被实例化就可以直接使用。静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。静态方法和静...
    99+
    2015-09-04
    PHP
  • php中的静态方法怎么使用
    这篇“php中的静态方法怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php中的静态方法怎么使用”文章吧。一、什么是...
    99+
    2023-07-05
  • php的static静态方法怎么使用
    本文小编为大家详细介绍“php的static静态方法怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“php的static静态方法怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。php static静...
    99+
    2023-07-04
  • php中静态方法可以访问非静态方法吗
    本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑。php中静态方法可以访问非静态方法吗如果我们调用了非静态方法会怎么样呢?首先做测试。<php class test{ function test() {...
    99+
    2021-05-29
    php
  • php中的静态属性和静态方法怎么用
    这篇文章主要介绍“php中的静态属性和静态方法怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php中的静态属性和静态方法怎么用”文章能帮助大家解决问题。在php中,通过static关键字修饰的...
    99+
    2023-06-26
  • javascript中如何使用class静态方法
    这篇文章将为大家详细讲解有关 javascript中如何使用class静态方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。类相当于实例的原型, 所有在类中...
    99+
    2022-10-19
  • 如何在javascript中使用静态方法
    这篇文章将为大家详细讲解有关如何在javascript中使用静态方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript的特点1.JavaScript主要用来向HTML页面添加...
    99+
    2023-06-14
  • 如何在java中使用静态方法
    如何在java中使用静态方法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向...
    99+
    2023-06-14
  • php如何将静态方法实例化
    这篇“php如何将静态方法实例化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何将静态方法实例化”文章吧。在PHP中...
    99+
    2023-07-05
  • 如何使用Mockito调用静态方法和void方法
    一、mock 静态方法 mockito库并不能mock静态方法,需要依赖powermock 第一步:给类添加注解 // 静态类优先加载,所以需要提前告诉powermock哪些静态...
    99+
    2022-11-12
  • C#静态方法的使用
    一、简介 使用了static 修饰符的方法为静态方法,反之则是非静态方法。 静态方法是一种特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要...
    99+
    2022-11-13
  • php使用静态方法的原因是什么
    这篇文章将为大家详细讲解有关php使用静态方法的原因是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在PHP中,使用静态方法是因为不需要所在类被实例化就可以直接使用,静态方法和静态变量创建后始终使用同...
    99+
    2023-06-29
  • php中的静态属性和静态方法是什么
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在 PHP 中,通过 static 关键字修饰的成员属性和成员方法被称为静态属性和静态方法,这里可以将它们统称为静态成员,类中的静态成员与类中的一般成员不同,静态成员不...
    99+
    2021-03-06
    php 静态属性 静态方法
  • Powermock静态方法怎么使用
    本篇内容主要讲解“Powermock静态方法怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Powermock静态方法怎么使用”吧!Mockito 很强大, 但是它不支持静态方法.所以, ...
    99+
    2023-06-04
  • java中静态方法如何调用
    在Java中,可以通过以下两种方式来调用静态方法:1. 使用类名调用静态方法:可以直接通过类名来调用静态方法,不需要创建类的实例。语...
    99+
    2023-09-14
    java
  • php中什么叫静态方法
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在 PHP 中,通过 static 关键字修饰的成员属性和成员方法被称为静态属性和静态方法,这里可以将它们统称为静态成员,类中的静态成员与类中的一般成员不同,静态成员不...
    99+
    2018-06-15
    php 静态方法
  • JavaScript——为什么静态方法不能调用非静态方法
    个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步至千里,积小...
    99+
    2023-08-30
    javascript 前端
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作