柔情似水 发表于 2015-2-3 23:30:40

PHP网页设计PHP中静态办法(static)与非静态办法的使...

会MYSQL吗?会,我会把我的信息在数据库里插入删除啦    static关头字用来润色属性、办法,称这些属性、办法为静态属性、静态办法。

static关头字声明一个属性或办法是和类相干的,而不是和类的某个特定的实例相干,因而,这类属性或办法也称为“类属性”或“类办法”

假如会见掌握权限答应,可不用创立该类对象而直接利用类名加两个冒号“::”挪用。

static关头字可以用来润色变量、办法。

不经由实例化,就能够直接会见类中static的属性和static的办法。

static 的属性和办法,只能会见static的属性和办法,不克不及类会见非静态的属性和办法。由于静态属性和办法被创立时,能够还没有任何这个类的实例可以被调

用。

static的属性,在内存中只要一份,为一切的实例共用。

利用self:: 关头字会见以后类的静态成员。

一个类的一切实例,共用类中的静态属性。

也就是说,在内存中即便有多个实例,静态的属性也只要一份。

上面例子中的设置了一个计数器$count属性,设置private 和 static 润色。

如许,外界其实不能直接会见$count属性。而法式运转的了局咱们也看到多个实例在利用统一个静态的$count 属性。

<?php   
class user   
{   
   private static $count = 0 ; //纪录一切用户的登录情形.   
   public function __construct() {   
         self::$count = self::$count + 1;   
   }   
   public function getCount() {      
         return self::$count;   
   }   
   public function __destruct() {   
         self::$count = self::$count - 1;   
   }   
}   
$user1 = new user();   
$user2 = new user();   
$user3 = new user();   
echo "now here have " . $user1->getCount() . " user";   
echo "<br />";   
unset($user3);   
echo "now here have " . $user1->getCount() . " user";   
?>   

静态属性直接挪用
静态属性不需求实例化就能够直接利用,在类还没有创立时就能够直接利用。

利用的体例是: 类名::静态属性名

<?php   
class Math   
{   
   public static $pi = 3.14;   
}   
// 求一个半径3的园的面积。   
$r = 3;   
echo "半径是 $r 的面积是<br />";   
echo Math::$pi * $r * $r;   
echo "<br /><br />";   
//这里我感觉 3.14 不敷准确,我把它设置的更准确。   
Math::$pi = 3.141592653589793;   
echo "半径是 $r 的面积是<br />";   
echo Math::$pi * $r * $r;      
?>   


类没有创立,静态属性就能够直接利用。那静态属性在甚么时分在内存中被创立? 在PHP中没有看到相干的材料。援用Java中的概念,来注释应当也具有通用性

。静态属性和办法,在类被挪用时创立。

静态办法
静态办法不需求地点类被实例化就能够直接利用。

利用的体例是类名::静态办法名

上面咱们持续写这个Math类,用来停止数学盘算。咱们设计一个办法用来算出个中的最大值。既然是数学运算,咱们也没有需要去实例化这个类,假如这个办法

可以拿过去就用就便利多了。咱们这只是为了演示static办法而设计的这个类。在PHP供应了 max() 函数对照数值。

view plaincopy to clipboardprint?
<?php   
class Math   
{   
   public static function Max($num1, $num2) {   
         return $num1 > $num2 ? $num1 : $num2;   
   }         
}   
$a = 99;   
$b = 88;   
echo "显示 $a 和 $b 中的最大值是";   
echo "<br />";   
echo Math::Max($a, $b);   
echo "<br />";   
echo "<br />";   
echo "<br />";   
$a = 99;   
$b = 100;   
echo "显示 $a 和 $b 中的最大值是";   
echo "<br />";   
echo Math::Max($a,$b);   
?>   

静态办法若何挪用静态办法
第一个例子,一个静态办法挪用其它静态办法时,利用self::

<?php   
// 完成最大值对照的Math类。   
class Math   
{   
   public static function Max($num1, $num2) {   
         return $num1 > $num2 ? $num1 : $num2;   
   }   
   public static function Max3($num1, $num2, $num3) {   
         $num1 = self::Max($num1, $num2);   
         $num2 = self::Max($num2, $num3);   
         $num1 = self::Max($num1, $num2);            
         return $num1;   
   }   
}   
$a = 99;   
$b = 77;   
$c = 88;   
echo "显示 $a $b $c 中的最大值是";   
echo "<br />";   
echo Math::Max3($a, $b, $c);   
?>



静态办法挪用静态属性
利用self:: 挪用本类的静态属性。

<?php   
//      
class Circle   
{   
   public static $pi = 3.14;   
   public static function circleAcreage($r) {   
         return $r * $r * self::$pi;   
   }   
}   
$r = 3;   
echo " 半径 $r 的圆的面积是 " . Circle::circleAcreage($r);   
?>   


静态办法不克不及挪用非静态属性 。不克不及利用self::挪用非静态属性。

<?php   
// 这个体例是毛病的   
class Circle   
{   
   public $pi = 3.14;   
   public static function circleAcreage($r) {   
         return $r * $r * self::pi;   
   }   
}   
$r = 3;   
echo " 半径 $r 的圆的面积是 " . Circle::circleAcreage($r);   
?>   


也不克不及利用 $this 获得非静态属性的值。

静态办法挪用非静态办法
PHP5中,在静态办法中不克不及利用 $this 标识挪用非静态办法。

<?php   
// 完成最大值对照的Math类。   
class Math   
{         
   public function Max($num1, $num2) {   
         echo "bad<br />";            
         return $num1 > $num2 ? $num1 : $num2;   
   }   
   public static function Max3($num1, $num2, $num3) {   
         $num1 = $this->Max($num1, $num2);   
         $num2 = $this->Max($num2, $num3);   
         $num1 = $this->Max($num1, $num2);            
         return $num1;   
   }   
}   
$a = 99;   
$b = 77;   
$c = 188;   
echo "显示 $a $b $c 中的最大值是";   
echo "<br />";   
echo Math::Max3($a, $b, $c);    //一样的这个会报错   
?>   

当一个类中有非静态办法被self:: 挪用时,体系会主动将这个办法转换为静态办法。

<?php   
// 完成最大值对照的Math类。   
class Math   
{         
   public function Max($num1, $num2) {            
         return $num1 > $num2 ? $num1 : $num2;   
   }   
   public static function Max3($num1, $num2, $num3) {   
         $num1 = self::Max($num1, $num2);   
         $num2 = self::Max($num2, $num3);   
         $num1 = self::Max($num1, $num2);            
         return $num1;   
   }   
}   
$a = 99;   
$b = 77;   
$c = 188;   
echo "显示 $a $b $c 中的最大值是";   
echo "<br />";   
echo Math::Max3($a, $b, $c);   
?>
来自PHP100服装论坛 http://bbs.php100.com
不可能吃饭的时候咬了自己一下舌头就从此不吃饭了不是?放下畏惧,继续努力,咱们是来征服它的,而不是被它征服的,振奋起来吧同志。

爱飞 发表于 2015-2-4 00:06:04

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

若相依 发表于 2015-2-9 07:53:12

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

深爱那片海 发表于 2015-2-26 23:51:17

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。

金色的骷髅 发表于 2015-3-1 19:41:39

做为1门年轻的语言,php一直很努力。

小妖女 发表于 2015-3-2 23:59:30

找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。

仓酷云 发表于 2015-3-4 02:44:57

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

活着的死人 发表于 2015-3-11 01:37:28

首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。

不帅 发表于 2015-3-17 18:09:24

这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。

小女巫 发表于 2015-3-24 17:17:29

做为1门年轻的语言,php一直很努力。

乐观 发表于 2015-3-25 20:03:12

如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,

精灵巫婆 发表于 2015-3-30 09:50:44

php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)

愤怒的大鸟 发表于 2015-4-3 19:13:31

首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。

分手快乐 发表于 2015-4-4 13:34:21

先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。

谁可相欹 发表于 2015-4-4 16:31:43

微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。

第二个灵魂 发表于 2015-4-4 22:50:50

在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、

若天明 发表于 2015-4-5 13:54:28

作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。

透明 发表于 2015-4-18 06:05:41

微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。

再见西城 发表于 2015-5-3 19:14:55

本文当是我的笔记啦,遇到的问题随时填充

蒙在股里 发表于 2015-5-7 23:18:11

刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
页: [1] 2
查看完整版本: PHP网页设计PHP中静态办法(static)与非静态办法的使...