php面向对象中static静态属性和静态方法的调用

本文实例讲述了php中static静态属性和静态方法的调用。分享给大家供大家参考。具体如下:

这里分析了php面向对象中static静态属性和静态方法的调用。关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了。静态属性、方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例化对象,就有多少个属性)。

实例:

<?php
header("content-type:text/html;charset=utf-8");
class Human{
 static public $name = "小妹";
 public $height = 180;
 static public function tell(){
 echo self::$name;//静态方法调用静态属性,使用self关键词
 //echo $this->height;//错。静态方法不能调用非静态属性
//因为 $this代表实例化对象,而这里是类,不知道 $this 代表哪个对象
 }
 public function say(){
 echo self::$name . "我说话了";
 //普通方法调用静态属性,同样使用self关键词
 echo $this->height;
 }
}
$p1 = new Human();
$p1->say(); 
$p1->tell();//对象可以访问静态方法
echo $p1::$name;//对象访问静态属性。不能这么访问$p1->name
//因为静态属性的内存位置不在对象里
Human::say();//错。say()方法有$this时出错;没有$this时能出结果
//但php5.4以上会提示
?>

结论:

(1)、静态属性不需要实例化即可调用。因为静态属性存放的位置是在类里,调用方法为"类名::属性名";
(2)、静态方法不需要实例化即可调用。同上
(3)、静态方法不能调用非静态属性。因为非静态属性需要实例化后,存放在对象里;
(4)、静态方法可以调用非静态方法,使用 self 关键词。php里,一个方法被self:: 后,它就自动转变为静态方法;

希望本文所述对大家的php程序设计有所帮助。

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
本文实例讲述了PHP计算指定日期所在周的开始和结束日期的方法。分享给大家供大家参考。具体实现方法如下: htmlheadtitle计算一周开始结束日期/title/headbodyform method="post" action="./index.html" enctype="utf-8"table trtd输入年份/td tdinput name="year" type="text" maxlength="4" //td /tr trtd输入月份/td tdinput name="month" typ

PHP中的string类型使用说明 - 2015-04-19 06:04:34

注意:PHP没有对string的长度做限制。唯一限制的就是PHP在计算机中的可用内存(php.ini文件中的memory_limit变量的值) 限定字符串范围的方法有4中: 1、单引号; 2、双引号; 3、原型文档语法; 4、nowdoc syntax(PHP5.3.0开始) 1、如果字符串使用单引号“‘”包裹,字符串中如果出现单引号“,”和反斜杠“\”符号,需要进行转义。 复制代码 代码如下: // Outputs: Arnold once said: "I'll be back" echo 'Arnol

Laravel5中contracts详解 - 2015-04-19 06:04:34

我们先来看看官方文档中对contracts的定义: Laravel's Contracts are a set of interfaces that define the core services provided by the framework. 意思是说Laravel的Contracts是一个由 框架提供 的定义了 核心服务接口 的集合。 也就是说,每一个Contract都是一个接口,对应一个框架核心服务。 那它的意义何在?官网给出的解释也很简单:使用接口是为了 松耦合 和 简单 。 先不讲大道理
复制代码 代码如下: //php获取今日开始时间戳和结束时间戳 $beginToday=mktime(0,0,0,date('m'),date('d'),date('Y')); $endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1; //php获取昨日起始时间戳和结束时间戳 $beginYesterday=mktime(0,0,0,date('m'),date('d')-1,date('Y')); $endYesterday=mktime(0,
下面本文将以具体的例子一一分析: capture标签 capture的中文意思是抓取,它的作用是抓取模板输出的数据,当我们需要它的时候,调用它,以得到抓取数据的目的。如下例子: 复制代码 代码如下: {capture name="test"} img src="testimg.jpg" {/capture} div class="image" {$smarty.capture.test} /div 说明:在{capture name="test"}和{/capture}之间的内容被存储到变量$test中,

深入分析PHP引用(&) - 2015-04-19 06:04:24

引用是什么 在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,替代的是,引用是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身——变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的 hardlink。 引用做什么 PHP 的引用允许用两个变量来指向同一个内容。意思是,当这样做时: ?php$a = $b;? 这意味着 $a 和 $b 指向了同一个变量。 Not
定义和用法 str_pad() 函数把字符串填充为指定的长度。 语法 str_pad(string,length,pad_string,pad_type)参数 描述 string 必需。规定要填充的字符串。 length 必需。规定新字符串的长度。如果该值小于原始字符串的长度,则不进行任何操作。 pad_string 可选。规定供填充使用的字符串。默认是空白。 pad_type 可选。规定填充字符串的那边。 可能的值: STR_PAD_BOTH - 填充到字符串的两头。如果不是偶数,则右侧获得额外的填充。
效果图: 复制代码 代码如下: ?php /** * vCode(m,n,x,y) m个数字 显示大小为n 边宽x 边高y * micxp *jb51.net */ session_start(); vCode(4, 15); //4个数字,显示大小为15 function vCode($num = 4, $size = 20, $width = 0, $height = 0) { !$width $width = $num * $size * 4 / 5 + 5; !$height $height = $
在web开发中经常会碰到一些简单的视频播放功能,但现在的视频格式不同,并且可以动态增加,所以我们就必须把视频保存到数据哦,好了下面我们来看我写的段简单的 php视频网页播放器 代码吧。 复制代码 代码如下: ?PHP include './admin/connect.php'; @extract($db-get_one("select * from movieinfo where id='".$_GET['id']."'")); $db-query("update movieinfo set playnum

php简单操作mysql数据库的类 - 2015-04-18 20:04:09

本文实例讲述了php简单操作mysql数据库的类。分享给大家供大家参考。具体如下: ?php/** * Database class * * @version: 2.2 * @revised: 27 may 2007 * **/class Database { var $host; var $name; var $user; var $pass; var $prefix; var $linkId; function Database($mysql) { foreach($mysql as $k = $v)