类和对象的关系
可以将类看成为一件模具,倒入不同的材料(属性和方法),这些材料用于构建独特的对象
类的基本组成部分
属性:类中的变量,用于储存数据
方法:类中的函数,用于操作和访问类的属性
类及其属性和方法的创建
定义类
class Class_name{
定义成员变量
var $variate_name;
定义变量并指定默认值
var $variate_name = value;
定义成员函数
function function_name(){
code block;
}
}
对象的创建及使用
对象是由类生成的具体实例,包含了类定义的属性及方法。
1.使用关键字new,通过类实例化对象
$object_name = new class_name();
2.属性的赋值:对象使用操作符,指定属性名进行赋值
$object_name -> attribute_name = value;
3.方法的调用:对象使用操作符。指定方法名进行调用
$object_name -> method_name(parameter);
练习及讲解
源码
<?phpheader("content-type:text/html;charset=utf8");class scan {//成员变量var $target;var $strength = 'medium'; //默认扫描强度为medium//成员函数function task($name='匿名'){echo $name . "正在对目标" . $this->target . '进行扫描' . "扫描强度为" . $this->strength;}}//实例化对象$person1 = new scan();//输出对象详细信息var_dump($person1) ;/* object(scan)#1 (2) { ["target"]=> NULL ["strength"]=> string(6) "medium" }*/echo '<br>';//调用对象内task方法$person1->task();//匿名正在对目标进行扫描扫描强度为medium//创建第二个对象,并指定target属性$person2 = new scan();$person2->target = '192.168.1.1';echo '<br>';var_dump($person2);/* object(scan)#2 (2) { ["target"]=> string(11) "192.168.1.1" ["strength"]=> string(6) "medium" }*///调用对象内task方法并传入实参$person2->task('you');//you正在对目标192.168.1.1进行扫描扫描强度为medium?>
实例讲解
class scan {
//成员变量
var $target;
var $strength = 'medium'; //默认扫描强度为medium//成员函数
function task($name='匿名'){
echo $name . "正在对目标" . $this->target . '进行扫描' . "扫描强度为" . $this->strength;
}}
定义类名为scan的类,类中定义成员变量target和strength,添加属性strength默认值为medium。
创建成员函数task,定义传参参name,默认值为 匿名 。
方法内部使用echo语句输出,由$name,$target,$strength属性构造的字符串。
特殊变量$this,代表当前对象,可以通过$this调用当前对象的属性及方法。
实例化对象
通过new实例化对象person1
$person1 = new scan();
var_dump输出对象详细信息
var_dump($person1);
object(scan)#1 (2) { ["target"]=> NULL ["strength"]=> string(6) "medium" }
变量类型为对象,由scan类的实例,编号为1。对象有两个属性,target属性值为空,strength属性类型为字符串长度为6个字符,具体为medium。
调用对象内方法
$person1->task();
由于未指定成员变量属性值和方法参数,target属性默认为空,medium属性默认为medium,name默认为匿名。
输出内容:
匿名正在对目标进行扫描扫描强度为medium
创建新的对象,指定成员变量属性值,调用方法传入实参
创建对象person2
$person2 = new scan();
指定target属性值
$person2->target = '192.168.1.1';
输出对象详细信息
var_dump($person2)
object(scan)#2 (2) { ["target"]=> string(11) "192.168.1.1" ["strength"]=> string(6) "medium" }
调用方法并传入实参
$person2->task('you');
you正在对目标192.168.1.1进行扫描扫描强度为medium