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
不可能吃饭的时候咬了自己一下舌头就从此不吃饭了不是?放下畏惧,继续努力,咱们是来征服它的,而不是被它征服的,振奋起来吧同志。 环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。 在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 做为1门年轻的语言,php一直很努力。 找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。 如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了, 首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。 这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。 做为1门年轻的语言,php一直很努力。 如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域, php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会) 首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、 作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 本文当是我的笔记啦,遇到的问题随时填充 刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
页:
[1]
2