关于php面向对象的静态变量的问题
代码如下:
<?php
class Book{
static $num=0;
public function showme(){
echo '您是第'.self::$num.'位访客';
self::$num++;
}
}
$book1 = new Book();
$book1->showme();
echo"<br>";
$book2=new Book();
$book2->showme();
echo "<br>";
echo '您是第'.Book::$num.'位访客';
?>
结果是:
您是第0位访客
您是第1位访客
您是第2位访客
如果改掉static 变成 public 那么为什么会出现错误:Fatal error: Access to undeclared static property: Book::$num
虽然Book::$num是调用的类内部变量,可是如果我用了public不是哪都能访问的到么?
难道 Book::$num 必须是静态变量?
怎么回事?
静态变量不用实例化对象,当累第一次被加载时就已经分配了内存单元。
这句话,如果适应到这个程序的话,是不是class Book{
static $num=0;
public function showme(){
echo '您是第'.self::$num.'位访客';
self::$num++;
}
}
这时已经被分配了内存了呢?
相关文档:
<?php
/************************************************************
* 描述:HTTP操作类
* 作者:heiyeluren
* 创建:2009/12/13 04:43
* 修改:2009/12/16 10:30 实现基本HTTP各种接口操作支持
*
************************************************************/
/**
* HTTP功能工厂方法类
......
function checkFileType($fileName){
$file = fopen($fileName, "rb");
$bin = fread($file, 2); //只读2字节
&n ......
基础问题:
最近被单双引号困扰着,不知道什么时候用双引号,什么时候用单引号。总结区分一下
在大部份语言中,引号引起来的内容都表示为字符。
例如:
<a href="地址">链接</a>
echo "字符串";
print("字 ......
最近工作范畴由原来的.net切换到了php,综合这段时间的认知,觉得在php这个体系中MVC模式未必是一个好东西。
从某种理论上来说,MVC确实可以让系统更清晰和更明了。
但是一个很重要的一点也存在了,MVC让页面更多了起来!!!这点很重要
PHP在没有一个比较好的IDE的支持下,页面跳转和切换实在是非常不方便。
没有一个好 ......
继承特性简化了对象,类的创建,增加了代码的重用性。但是PHP之支持单继承。如果想实现多继承的话就要用到PHP的借口。PHP可是实现多个接口。
不要用public以外的关键字来修饰接口中的类成员。对于方法,不写关键字也可以。这是一个借口类自身的天性决定的。那么我想他是为什么呢?
对于接口来说,它不能用protected,和pr ......