1.发展与解释:

汇编:面向机器

C语言:面向过程

java:面向对象

php:支持面向对象

其实类也是一种数据类型

a.类是抽象的,代表一类事物

b.对象是具体的,是类的一个具体实例

c.类是对象的模板,对象是类的一个个体实例


2.简单入门案例:

<?phpclassCat{public$name;public$age;public$color;}$cat1=newCat();//对类进行实例化/创建一个对象/实例化对象三者说法同种意思$cat1->name="小白";$cat1->age=10;$cat1->color="red";$FindCat="小白";if($cat1->name==$FindCat){ECHO$FindCat."存在";}?>

3.用法



a.成员属性的说明:

成员属性是从某个事物中提取出来,可以是基本数据类型(整数,小数,字符,布尔),也可以是复合数据类型(数组,对象)

Class 类名{

成员属性;

}

b.创建对象:

$对象名=new 类名();

or

$对象名=new 类名;

c.访问对象属性

$对象名->属性名;

d.class命名规范

如果一个文件专门用于定义类的,没有类的操作,其命名规范:

类名.class.php

Class 类名

{

}

4.从内存详细解释

内存图


堆区:对象,一般存较小的的

栈区:基本数据类,一般是较大的


案例1:

<?phpclassCat{public$name;public$age;public$color;}$c=90;$cat1=newCat();$cat1->name="小白";$cat1->age=10;$cat1->color="red";$cat2=$cat1?>

内存图如下:



案例2:

<?php$a=9;$b=$a;$b=$b+8;Echo$a."".$b;?>

内存图如下:


案例3:

<?php$a=9;$b=&$a;$b=$b+8;Echo$a."".$b;?>

内存图如下:

案例4:

<?phpClassPerson{public$name;Public$age;}$p1=newPerson();$p1->name="小明";$p1->age=10;Functiontest1($p){$p->name="小花";}Test1($p1);Echo$p1->name;?>


a.函数接收对象时候,究竟接收的是值,还是地址?

b.如果是基本数据类型?在默认情况下,传递的是值,如果希望传入地址:

Functiontest(&$变量名)

{

}

在php中,如果给一个函数传递的是数组,则默认情况下是传值(拷贝了新的数组),如果如果希望传入地址:

Functiontest(&$array)

{

}

问题?

<?php$arr=array($a1,$a2);$a1=array(1,2,3);$a2=array(4,5,6,7);foreach($arras$k=>$v){echo"$k=$v";}var_dump($arr);?>

…………………………………………………..区别

<?php$a1=array(1,2,3);$a2=array(4,5,6,7);$arr=array($a1,$a2);foreach($arras$k=>$v){echo"$k=$v";}var_dump($arr);?>

错误