请çPHPæå18ç« ï¼éé¢çå
å®¹ä½ çäºå°±æç½ã
第 18 ç« ç±»ä¸å¯¹è±¡ï¼PHP 4ï¼
ç®å½
ç±»
继æ¿
æé å½æ°
èå´è§£ææä½ç¬¦ï¼::ï¼
parent
åºåå对象 ï¼ ä¼è¯ä¸ç对象
éæ¯å½æ° __sleep å __wakeup
æé å½æ°ä¸çå¼ç¨
对象çæ¯è¾
ç±»
ç±»æ¯åéä¸ä½ç¨äºè¿äºåéçå½æ°çéåã使ç¨ä¸é¢çè¯æ³å®ä¹ä¸ä¸ªç±»ï¼
<?php
class Cart {
var $items; // è´ç©è½¦ä¸çç©å
// å° $num 个 $artnr ç©åå å
¥è´ç©è½¦
function add_item($artnr, $num) {
$this->items[$artnr] += $num;
}
// å° $num 个 $artnr ç©åä»è´ç©è½¦ä¸ååº
function remove_item($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} elseif ($this->items[$artnr] == $num) {
unset($this->items[$artnr]);
return true;
} else {
return false;
}
}
}
?>
ä¸é¢çä¾åå®ä¹äºä¸ä¸ª Cart ç±»ï¼è¿ä¸ªç±»ç±è´ç©è½¦ä¸çååææçæ°ç»å两个ç¨äºä»è´ç©è½¦ä¸æ·»å åå é¤ååçå½æ°ç»æã
è¦å
ä¸è½å°ä¸ä¸ªç±»çå®ä¹åå²å°å¤ä¸ªæ件ä¸ãä¹ä¸è½å°ä¸ä¸ªç±»çå®ä¹åå²å°å¤ä¸ª PHP åä¸ï¼é¤é该åå²æ¯å¨ä¸ä¸ªæ¹æ³å£°æå
é¨ã以ä¸ç¨æ³å°ä¸èµ·ä½ç¨ï¼
<?php
class test {
?>
<?php
function test() {
print 'OK';
}
}
?>
ä½æ¯ä»¥ä¸ç¨æ³æ¯å¯ä»¥çï¼
<?php
class test {
function test() {
?>
<?php
print 'OK';
}
}
?>
以ä¸è¦åä»
ç¨äº PHP 4ã
å°å¿
å称 stdClass å·²ç»è¢« Zend 使ç¨å¹¶ä¿çãä¸è½å¨ PHP 代ç ä¸å®ä¹å为 stdClass çç±»ã
å°å¿
å½æ°å __sleep å __wakeup å¨ PHP ç±»ä¸æ¯éæ¯å½æ°ãé¤éæ³è¦ä¸ä¹èç³»çéæ¯åè½ï¼å¦åå¨ä»»ä½ç±»ä¸é½ä¸è½ä»¥æ¤å½åå½æ°ã
å°å¿
PHP å°ææ以 __ å¼å¤´çå½æ°åä¿ç为éæ¯å½æ°ãé¤éæ³è¦ä½¿ç¨ä¸äºè§äºææ¡£ä¸çéæ¯åè½ï¼å¦å建议ä¸è¦å¨ PHP ä¸å°å½æ°å以 __ å¼å¤´ã
å¨ PHP 4 ä¸ï¼var åéçå¼åªè½åå§å为常éãç¨é常éå¼åå§ååéï¼éè¦ä¸ä¸ªåå§åå½æ°ï¼è¯¥å½æ°å¨å¯¹è±¡è¢«å建æ¶èªå¨è¢«è°ç¨ãè¿æ ·ä¸ä¸ªå½æ°è¢«ç§°ä¹ä¸ºæé å½æ°ï¼è§ä¸é¢ï¼ã
<?php
/* PHP 4 ä¸ä¸è½è¿æ ·ç¨ */
class Cart {
var $todays_date = date("Y-m-d");
var $name = $firstname;
var $owner = 'Fred ' . 'Jones';
/* ä¸è¿å
å«æ常éçæ°ç»å¯ä»¥ */
var $items = array("VCR", "TV");
}
/* åºè¯¥è¿æ ·è¿è¡ */
class Cart {
var $todays_date;
var $name;
var $owner;
var $items = array("VCR", "TV");
function Cart() {
$this->todays_date = date("Y-m-d");
$this->name = $GLOBALS['firstname'];
/* etc. . . */
}
}
?>
ç±»ä¹æ¯ä¸ç§ç±»åï¼å°±æ¯è¯´ï¼å®ä»¬æ¯å®é
åéçèå¾ãå¿
é¡»ç¨ new è¿ç®ç¬¦æ¥å建ç¸åºç±»åçåéã
<?php
$cart = new Cart;
$cart->add_item("10", 1);
$another_cart = new Cart;
$another_cart->add_item("0815", 3);
?>
ä¸è¿°ä»£ç å建äºä¸¤ä¸ª Cart ç±»ç对象 $cart å $another_cartï¼å¯¹è±¡ $cart çæ¹æ³ add_item() 被è°ç¨æ¶ï¼æ·»å äº 1 件 10 å·ååã对äºå¯¹è±¡ $another_cartï¼3 件 0815 å·åå被添å å°è´ç©è½¦ä¸ã
$cart å $another_cart é½ææ¹æ³ add_item()ï¼remove_item() åä¸ä¸ª items åéãå®ä»¬é½æ¯ææ¾çå½æ°ååéãå¯ä»¥æå®ä»¬å½ä½æ件系ç»ä¸çæäºç±»ä¼¼ç®å½çä¸è¥¿æ¥èèãå¨æ件系ç»ä¸ï¼å¯ä»¥æ¥æ两个ä¸åç README.TXT æ件ï¼åªè¦ä¸å¨ç¸åçç®å½ä¸ãæ£å¦ä»ä¸ºäºæ ¹ç®å½è®¿é®æ¯ä¸ªæ件éè¦è¾å
¥è¯¥æ件çå®æ´çè·¯å¾åä¸æ ·ï¼å¿
é¡»æå®éè¦è°ç¨çå½æ°çå®æ´å称ï¼å¨ PHP æ¯è¯ä¸ï¼æ ¹ç®å½å°æ¯å
¨å±åå空é´ï¼è·¯å¾å符å·å°æ¯ ->ãå èï¼å称 $cart->items å $another_cart->items å½åäºä¸¤ä¸ªä¸åçåéã注æåéå为 $cart->itemsï¼ä¸æ¯ $cart->$itemsï¼é£æ¯å ä¸ºå¨ PHP ä¸ä¸ä¸ªåéååªæä¸ä¸ªåç¬çç¾å
符å·ã
<?php
// æ£ç¡®ï¼åªæä¸ä¸ª $
$cart->items = array("10" => 1);
// ä¸æ£ç¡®ï¼å 为 $cart->$items åæäº $cart->""
$cart->$items = array("10" => 1);
// æ£ç¡®ï¼ä½å¯è½ä¸æ¯æ³è¦çç»æï¼
// $cart->$myvar åæäº $cart->items
$myvar = 'items';
$cart->$myvar = array("10" => 1);
?>
å¨å®ä¹ç±»çæ¶åï¼æ æ³å¾ç¥å°ä½¿ä»ä¹ååç对象æ¥è®¿é®ï¼å¨ç¼å Cart ç±»æ¶ï¼å¹¶ä¸ç¥éä¹å对象çå称å°ä¼å½å为 $cart æè
$another_cartãå èä½ ä¸è½å¨ç±»ä¸ä½¿ç¨ $cart->itemsãç¶è为äºç±»å®ä¹çå
é¨è®¿é®èªèº«çå½æ°ååéï¼å¯ä»¥ä½¿ç¨ä¼ªåé $this æ¥è¾¾å°è¿ä¸ªç®çã$this åéå¯ä»¥ç解为âæèªå·±çâæè
âå½å对象âãå è '$this->items[$artnr] += $num' å¯ä»¥ç解为âæèªå·±çç©åæ°ç»ç $artnr 计æ°å¨å $numâæè
âå¨å½å对象çç©åæ°ç»ç $artnr 计æ°å¨å $numâã
注æ: 伪åé $this é常æªå®ä¹ï¼å¦æå
¶æå¨çæ¹æ³æ¯è¢«éæè°ç¨çè¯ãä½è¿ä¸æ¯ä¸ªä¸¥æ ¼è§å®ï¼å¦æä¸ä¸ªæ¹æ³è¢«ä»å¦ä¸ä¸ªå¯¹è±¡å
éæè°ç¨çè¯ï¼å $this ä¼è¢«å®ä¹ãæ¤æ¶ $this çå¼æ¯é£ä¸ªååºè°ç¨ç对象ãç¨ä¸ä¾æ¼ç¤ºï¼
<?php
class A
{
function foo()
{
if (isset($this)) {
echo '$this is defined (';
echo get_class($this);
echo ")\n";
} else {
echo "\$this is not defined.\n";
}
}
}
class B
{
function bar()
{
A::foo();
}
}
$a = new A();
$a->foo();
A::foo();
$b = new B();
$b->bar();
B::bar();
?>
ä¸ä¾å°è¾åºï¼
$this is defined (a)
$this is not defined.
$this is defined (b)
$this is not defined.
注æ: æä¸äºä¸éçå½æ°ç¨æ¥å¤çç±»å对象ãåºè¯¥å
³æ³¨ä¸ä¸ç±»ï¼å¯¹è±¡å½æ°ã
温馨提示:内容为网友见解,仅供参考
php中的类有什么用?和自定义函数有什么区别?
构造函数 范围解析操作符(::)parent 序列化对象-会话中的对象 魔术函数__sleep和__wakeup 构造函数中的引用 对象的比较 类 类是变量与作用于这些变量的函数的集合。使用下面的语法定义一个类:<?php classCart{ var$items;\/\/购物车中的物品 \/\/将$num个$artnr物品加入购物车 functionadd_item($...
phpclass是什么意思,怎么用
class关键字在PHP中用于声明类。类是面向对象编程的核心,它封装了数据和操作这些数据的方法。在PHP中创建类时,使用"class"关键字开头,后面跟类名。类定义后,可以创建类的实例,即对象。对象是类的具体化,它包含了类定义的数据和方法。通过实例化类,可以调用类中的方法并访问其属性。类的定义通常...
在php中,函数就是类吗?
首先我先解释一下概念:第一:什么是函数?你不要被术语所迷惑。你可理解成完成一个所指定的功能 这就叫函数,可能听起来还不是理解下面举例说明:比如你现在有一个需求:将一个字符串从小写转成大小 我们首先想有没有这样一个完成我所指定的功能这样一个东西,很显示有那就是 strtoupper(); 这是就...
php中函数库和类库到底有什么区别?
就是很多函数的集合。有很多功能,你就不用自己重新写了,直接使用就可以。而类库,你要先理解类。类,你可以理解为函数根据实际需求分类存放的一个地方。因为如果项目很大,就会有很多函数,如果不分类,有时候就很难找到了。根据函数的功能,把一类函数都整合到一个类里面,使用起来就很方便。比如数据...
关于PHP中的Class的几点个人看法
首先:要知道它里面是否定义了公共的变量--专业术语上称它为“属性”。其次:要知道它里面定义了什么函数--专业术语中称它为“方法”。我都被这些专业术语搞糊涂了,所以干脆不理它了。类中的如何定义公共变量,它有什么作用呢?很简单,我们来扩充 my_class 类:class my_class{var $username;}...
php标识符有哪些
PHP中的标识符主要有以下几种:变量名、函数名、类名、常量名等。以下是详细的解释:变量名:在PHP中,变量是用来存储数据的,如字符串、整数、浮点数等。变量名是识别变量的标识。PHP中的变量名以美元符号开头,后面跟着自定义的名称。例如:$username、$age等。变量名是区分大小写的。函数名:函数是...
php中的方法和函数是一个意思吗?
英文里是一个单词。但是在php中场合不一样,叫法也不一样 对于一般的情况,叫方法和函数都一样,但是在类里(class),都统一叫方法
【PHP】初始化是一定要用类的同名函数做构造函数吗?
PHP中类的初始化有两种方式,一种是像你所说的同名函数做构造函数,另外一种则是定义__construct()(前面两个下划线_)做构造函数,这两者除了函数名称不一样外,其它没什么区别,都是用来初始化类的。但建议用后者,原因是如果使用了同名函数做构造函数,当类名发生改变,相应的构造函数名也要改变。...
PHP中this,self和static的区别
PHP支持类和面向对象结构,PHP的类的静态函数和变量不与任何特定类的实例相关联(换句话说,一个对象)。相反,静态函数和变量与类定义本身相关联。换言之,一个类的所有实例都共享相同的静态变量。在一个类的方法(函数)的上下文中,静态变量和函数被访问使用self::,在一个类的对象(实例)的上下文...
PHP 自定义函数一般写在哪里
当然写在PHP文件里 一般写在单独的PHP文件里,然后引用进来 也可以写在class里,但文件都是PHP的呀