前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >php学习之类与对象的类的静态方法

php学习之类与对象的类的静态方法

作者头像
吾爱乐享
发布于 2019-12-30 09:09:44
发布于 2019-12-30 09:09:44
63900
代码可运行
举报
文章被收录于专栏:吾爱乐享吾爱乐享
运行总次数:0
代码可运行

基本介绍

当程序员需要对静态属性进行操作时,就需要定义静态方法处理,静态方法是专门操作静态属性的

基本语法

class 类名{

访问修饰符 static function 函数名 (){

//函数体

}

}

说明:

  1. 静态方法是在类中定义的
  2. static是关键词
  3. 静态方法是专门用于操作静态属性
  4. 静态方法可以直接用类名调用,形式是:类名::静态方法名(参数)

小案例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php

//静态方法
class Person{
public $name;
private static $age=18;
//静态方法来操作静态属性
public static function getAge(){
echo '年龄是 '.self::$age;
}
}
//通过类名在外部直接调用静态方法
Person::getAge();
?>

静态方法注意事项

  • 在类的外部调用静态方法:类名::静态方法名,或者对象名->静态方法名或者对象名::静态方法名,后面两种不推荐使用
  • 在类的内部调用静态方法:self::静态方法名  或者类名::静态方法名,通过$this也可以
  • 静态方法中只能访问静态属性, 不能访问非静态属性
  • 普通成员方法,既可以访问非静态属性也可以访问静态属性
  • 如果静态方法被protected或private修饰,也不能在类的外部使用

案例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php

//静态方法
class Person{
public $name;
private static $age=18;

//构造方法
public function __construct($name){
$this->name=$name;
}
//静态方法来操作静态属性
public static function getAge(){
echo '年龄是 '.self::$age;
//静态方法中只能访问静态属性,不能访问非静态属性
//echo $this->name.'的年龄是 '. self::$age;//这样写是错误的 不能访问非静态属性
//echo self::$name.'的年龄是 '. self::$age;//这样写也是错误的 不能访问非静态属性
}
//在类的内部调用静态方法
public function show(){
//方法一:self::方法名
self::getAge();
//方法二:类名::方法名
Person::getAge();
//方法三:$this->方法名
$this->getAge();
}
}


//通过类名在外部直接调用静态方法
Person::getAge();
//在类的外部通过对象调用静态方法
$person = new Person('张三');
$person->getAge();
//在类的外部通过对象名::静态方法调用
$person::getAge();

$person->show();
?>

静态属性和静态方法实战: 单例模式

编写一个操作数据库的工具类,要求只能创建一个对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
//编写一个操作数据库的工具类,要求只能创建一个对象

class DaoMysql{
//定义需要的属性
//连接数据库
private $mysql_link;
//定义一个静态属性,用来类的对象实例
private static $instance = null;
//构造方法
public function __construct($host,$user,$pass){
//这里只连接一次数据库,减少资源

$this->mysql_link = @mysql_connect($host,$user,$pass);
echo $this->mysql_link;
}
//写一个静态方法,通过这个静态方法来创建对象实例
public static function getSingleton($host,$user,$pass){
//通过getSingleton来创建对象
//判断控制是否已经创建过对象
if(self::$instance == null){
self::$instance = new DaoMysql($host,$user,$pass);
}
return self::$instance;
}
//阻止克隆
private function __clone(){}
}

$dao1 = DaoMysql::getSingleton('localhost','root','');
$dao2 = DaoMysql::getSingleton('localhost','root','root');
var_dump($dao1,$dao2);//结果都是同一个对象

?>

另一种写法(推荐)

instance是类型运算符,它用于判断某个变量是否是某个类的对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
//编写一个操作数据库的工具类,要求只能创建一个对象

class DaoMysql{
//定义需要的属性
//连接数据库
private $mysql_link;
//定义一个静态属性,用来类的对象实例
private static $instance = null;
//构造方法
public function __construct($host,$user,$pass){
//这里只连接一次数据库,减少资源

$this->mysql_link = @mysql_connect($host,$user,$pass);
echo $this->mysql_link;
}
//写一个静态方法,通过这个静态方法来创建对象实例
public static function getSingleton($host,$user,$pass){
//通过getSingleton来创建对象
//判断控制是否已经创建过对象
/* //第一种写法
if(self::$instance == null){
self::$instance = new DaoMysql($host,$user,$pass);
}
return self::$instance;
} */
//第二种写法
//instanceof是类型运算符,它用于判断某个变量是否是某个类的对象
if(!self::$instance instanceof self){
self::$instance = new self($host,$user,$pass);
}
return self::$instance;
}
//阻止克隆
private function __clone(){}
}

$dao1 = DaoMysql::getSingleton('localhost','root','');
$dao2 = DaoMysql::getSingleton('localhost','root','root');
var_dump($dao1,$dao2);//结果都是同一个对象

?>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-11-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
100%自适应+H5风格+极速响应 6款WORDPRESS企业主题模板推荐
虽然Wordpress是以博客而闻名于天下,但是用其来做企业主题网站,也是非常的适合!以下是博主精心挑选的TOP6-Wordpress企业主题模板,100%自适应、H5风格、极速响应,非常迎合搜索引擎,做SEO。每款主题对应都有视频教程和备份文件,确保能和Demo做出一样的效果。以下所有主题博主都有,如果有需要的话请联系~
梦想家路飞
2018/05/27
8.5K3
WordPress 官方 Automattic 出品的免费主题
如果你正在为你的博客找款免费的 WordPress 主题,那么我推荐你看下 WordPress 官方 Automattic 自己出品的一系列免费的 WordPress 主题,这些主题已经用在 WordPress.com 上面,经过了长期的测试,经常更新,而且设计的都很不错,最主要的是代码都非常标准,今天就罗列一下其中比较不错的一些:
Denis
2023/04/14
7590
WordPress 官方  Automattic 出品的免费主题
6款最佳WORDPRESS免费主题模板:GENERATEPRESS位列榜首
无论你的网站是什么内容,是什么行业,访客首先关注的是你的主题(外观),毕竟颜值即正义的时代。所以,对于Worpdress网站来讲,主题的重要性不言而喻。 今晚博主放弃了打DOTA的时间,整理出了6款免费的Wordpress主题模板,每一款都是上乘之作。希望大家喜欢。小小的透露下,每周都会不定期更新免费的Wordpress主题模板,各位WP爱好者记得关注哦- -
梦想家路飞
2018/05/25
5.1K3
10款超简洁风格的WORDPRESS免费主题模板
虽说现在Wordpress的应用越来越广泛:个人博客,企业官网,电子商务网站等等,也涌现出不少风格华丽、功能齐全的Wordpress主题。但是,归根结底来讲,情怀而论,我更偏爱那些设计风格简洁到极致的Wordpress主题。所以,今天小编就推荐简洁风格的wordpress免费模板,喜欢的朋友可以收藏一下。如果需要打包的请在本文下面留言~
梦想家路飞
2018/05/26
4.6K2
10款超简洁风格的WORDPRESS免费主题模板
WordPress最受欢迎的主题模板
大家好,我是条哥,我又来分享啦,今天给大家分享的是WordPress最受欢迎的几款主题模板。
兔云小新LM
2023/06/19
3660
WordPress最受欢迎的主题模板
wordpress建站如何选择主题模板?盘点有哪些经典主题值得推荐
wordpress建站门槛可以说非常的低了,一个新手稍微学习一下就可以搞出来一个看起来不错的网站的,你个服务器,域名,wordpress程序,wordpress主题只需要这几个要素就可以建出一个不错的成品网站来,但很多人比较纠结如何选择合适的主题;今天就给大家系数一些有哪些经典的wordpress主题吧。
wordpress建站吧
2022/03/15
2.9K0
wordpress建站如何选择主题模板?盘点有哪些经典主题值得推荐
WordPress主题推荐
作为网站的基础,WordPress主题对网站加载速度具有重要影响。一个设计不好,代码杂乱的WordPress主题会严重影响网站加载速度,进而影响网站排名。相反,一个设计良好,代码简洁的WP主题会加载很快,有助于提升网页排名。在本文中,我们已经为你整理了一些速度快且适合SEO的WordPress主题。
无代码Dev
2024/03/07
2580
WordPress主题推荐
WordPress主题制作(二):模板和模板文件
制作WordPress需要了解PHP,但是无论如何,最终呈现在用户面前的页面都是一张网页,网页之所以能够在浏览器中显示出来,是因为最终传送给浏览器的是HTML、CSS和JS等终端代码,最终由这些代码控制浏览器的显示结果。制作WordPress主题也不例外!
Yiiven
2022/12/15
1.7K0
WordPress主题制作(二):模板和模板文件
WordPress 主题教程 #2:模板文件和模板
模板文件(template files)和模板(template)是从零开始创建 WordPress 主题系列教程的第二篇。开始之前,你要确保你已经看过WordPress 主题教程 #1:介绍,否则你将无法理解在教程 #2 中使用的名词。 在WordPress 主题教程 #1:介绍中,我们已经学过了 WordPress 的两条基本规则和术语,而这篇将会深入讲解模板文件,模板,以及每个页面的结构。
Denis
2023/04/15
7860
WordPress 主题教程 #2:模板文件和模板
最佳5款WordPress主题推荐:外贸独立站、个人博客和电商的必备选择
选择适合的WordPress主题是打造高质量网站的关键。无论是个人博客、外贸独立站还是电商平台,合适的主题能提升用户体验并强化品牌形象。本文将从主题的功能性、性能、响应设计、SEO友好度和兼容性等方面,为您推荐值得关注的7款WordPress主题,帮助您快速找到适合的主题,助你的网站脱颖而出。
1aha
2024/11/07
2.5K0
最佳5款WordPress主题推荐:外贸独立站、个人博客和电商的必备选择
新手如何选择适合自己网站的WordPress主题模板
如果您决定在WordPress平台上建立自己的网站,那么恭喜您!您将加入一个拥有数百万用户的社区,并得到成千上万开发人员的支持,他们将不断改进和开发该平台的新功能。
用户3421851
2025/04/02
1160
新手如何选择适合自己网站的WordPress主题模板
15款速度超快的最佳轻量化WordPress主题
您的 WordPress 网站是否感觉更像是一匹慢车,而不是一匹赛马? 速度很重要。 厚重的主题会拖累网站性能,使您失去访问量和排名。 但选择一个轻量级的 WordPress 主题就好比选择一匹灵活的骏马以提高速度。 这就是在不牺牲外观的前提下优先考虑性能的轻量化设计。
用户3421851
2025/04/23
1550
15款速度超快的最佳轻量化WordPress主题
WordPress 主题教程 #16:留言模板
这篇教程是在 WordPress 2.7 之前撰写的,而 WordPress 2.7 之后支持了 Thread Comments,这里有让你的主题实现 WordPress 2.7 的 Thread Comments 的方法。但是还是建议你查看下这篇教程。
Denis
2023/04/14
7600
WordPress 主题教程 #16:留言模板
非常适合个人搭建博客—WordPress开源免费主题汇总
WordPress最重要的就是找一个适合自己的主题了。好一点的WordPress主题基本上都是要收费的,而且价格还不便宜,这导致了不少的新手朋友们很为难。而有时我们仅仅根据个人的爱好来搭建一个博客,所以也没有必要去支付高额的费用来购买Wordpress主题。
聚优云惠
2022/05/22
25.5K1
WordPress一款响应式Alt_Blog主题
WordPress响应式免费主题,一款基于Js+jquery2.1.4+H5/CSS3响应式+Wordpress后台开发,每天活人访问量500-800+IP,百度权重2,百度、Google收录链接突破1800+条,前后端完全独立制作,现主题作者Art_Blog开源给所有小伙伴免费使用!
空木白博客
2020/05/10
1.1K0
推荐一款适应于学习和课程管理的 WordPress 主题:Course
WordPress 官方有个学习和课程管理插件 Sensei LMS,最近也推出它的第一个区块主题,名字就叫做 Course:
Denis
2023/04/13
3730
推荐一款适应于学习和课程管理的 WordPress 主题:Course
怎样创建受欢迎的 WordPress 主题
创建一个 WordPress 主题很容易,但创建一个下载量成千上万的 WordPress 主题就难了。创建一个受欢迎的主题,拥有成千上万的下载量,而且保证能粘住用户就更难了。
Denis
2023/04/13
5560
wordpress建站,盘点有哪些经典主题值得推荐?
wordpress建站门槛可以说非常的低了,一个新手稍微学习一下就可以搞出来一个看起来不错的网站的,你个服务器,域名,wordpress程序,阅读原文:https://www.zouaw.com/5666.html
wordpress建站吧
2019/08/01
2.2K0
2016年度ThemeForest网站平台20款优秀WordPress主题模板
根据我们的习惯,大部分国内的站长用户很少有选择付费主题,这也是为什么国内很多优秀的WordPress主题作者一腔热情发布几款付费主题之后并没有带来预想的销售量,反而被盗版、免费发布出来影响心情。所以,直接导致我们目前在国内寻找到优秀的WordPress主题并不是很多,主题作者反而会加入类似ThemeForest平台发布付费作品获取海外用户的付费下载。
老蒋
2021/12/27
9330
2016年度ThemeForest网站平台20款优秀WordPress主题模板
这个七夕,怎样秀才出彩?
【5分钟玩转Lighthouse】系列文章将为大家分享轻量应用服务器使用教程,提供丰富的实践指南,帮助大家快速上手并获得最佳产品体验。本期教程将为大家介绍如何借力 Lighthouse 实例,快速搭建基于 Typecho 的爱情博客网站。 一份“特别”的礼物 临近七夕,身为程序员的你是不是还在想应该送什么礼物给女朋友才好呢?口红,鲜花,衣服,首饰?为何不送她一份具有程序员特色的礼物呢?比如一个专门记录你们之间点点滴滴的爱情网站。 Typecho 是一款开源的博客和内容管理网站的建站平台,具备轻量高效,
腾讯云计算产品团队
2021/08/17
4910
推荐阅读
相关推荐
100%自适应+H5风格+极速响应 6款WORDPRESS企业主题模板推荐
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档