php中的类有什么用?和自定义函数有什么区别?

php中的类有什么用?和自定义函数有什么区别?能举例最好~!
可以继承是什么意思??

请看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.

     

注意: æœ‰ä¸€äº›ä¸é”™çš„函数用来处理类和对象。应该关注一下类/对象函数。 
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-08-22
函数只是类的一部分

类可以继承等,有封闭性

类跟函数是两个完全不同的概念

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的呀

相似回答