仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1305|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网页设计PHP中静态办法(static)与非静态办法的使...

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:30:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
会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 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
金色的骷髅 该用户已被删除
5#
发表于 2015-3-1 19:41:39 | 只看该作者
做为1门年轻的语言,php一直很努力。
小妖女 该用户已被删除
6#
发表于 2015-3-2 23:59:30 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
7#
发表于 2015-3-4 02:44:57 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
活着的死人 该用户已被删除
8#
发表于 2015-3-11 01:37:28 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
不帅 该用户已被删除
9#
发表于 2015-3-17 18:09:24 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
小女巫 该用户已被删除
10#
发表于 2015-3-24 17:17:29 | 只看该作者
做为1门年轻的语言,php一直很努力。
乐观 该用户已被删除
11#
发表于 2015-3-25 20:03:12 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
精灵巫婆 该用户已被删除
12#
发表于 2015-3-30 09:50:44 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
愤怒的大鸟 该用户已被删除
13#
发表于 2015-4-3 19:13:31 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
分手快乐 该用户已被删除
14#
发表于 2015-4-4 13:34:21 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
谁可相欹 该用户已被删除
15#
发表于 2015-4-4 16:31:43 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
第二个灵魂 该用户已被删除
16#
发表于 2015-4-4 22:50:50 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
若天明 该用户已被删除
17#
发表于 2015-4-5 13:54:28 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
透明 该用户已被删除
18#
发表于 2015-4-18 06:05:41 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
再见西城 该用户已被删除
19#
发表于 2015-5-3 19:14:55 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
蒙在股里 该用户已被删除
20#
发表于 2015-5-7 23:18:11 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-22 14:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表