自己在敲代码的时候,才发现自己的基础知识不够扎实,然后我就回头来看基础知识,所有的东西都在基础知识之上才能完成。就像一座高楼,如果底层都不扎实,这栋楼肯定不会长远,所以基础知识非常非常重要。
主要复习的是面向对象的东西。
面向对象有三大属性,分别为分装性,继承性,多态性
那么什么是对象,类的实例化得结果就是对象,对象的抽象就是类,现有类,在有对象。对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单元。比如说做一个产品,你有一个模板,那么你就按照这个模板来做,做出来的东西肯定都是一样的(非绝对,这个跟程序还是有区别)。
首先我们要知道什么是类,类的命名规则,以及类中包含了什么。
类是一个独立的程序单元 ,内部主要包括了成员属性和成员方法。类的命名规则是驼峰规则,每个单词首写字字母需要大写,并且具有意义的(这样别人一看就懂)
成员属性,在申明成员属性的时候,需要在属性前加上private、public、static、var等关键字。成员方法也是类似成员属性一样
实例化对象
比如 $person=new Person();
$person 实例化变量名,new关键字,Person()类名
那么对象中的成员的访问
$person->成员属性=值,成员属性赋值
$person->成员方法,成员方法调用
构造函数 __construct 在执行所有自定义函数之前执行,在一个类中只能有一个构造函数
<?php
class Person{
//定义成员属性
var $name;
var $sex;
var $age;
function __construct($name='',$sex='man',$age=18){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
//定义成员方法
function say(){
//使用$this访问自己对象内部的成员属性
echo '我的名字:'.$this->name.',性别为:'.$this->sex.',年龄:'.$this->age.'。<br/>';
}
function run(){
echo $this->name.'在running';
}
}
$person1=new Person('jack','woman',17);
$person2=new Person('jachin','man');
$person3=new Person('juck');//实例化类
$person4=new Person();
$person4->name='ann';//给成员属性赋值
$person1->say();//调用成员方法
$person2->say();
$person3->say();
$person4->say();
这里调用构造函数的时候,会自动赋值
析构方法的什么格式与构造方法相似,在类中申明的析构方法名称也是固定的,__destruct()。析构方法允许在销毁一个对象之前执行一些特定的操作,比如关闭文件、释放结果集等
<?php
class Person{
//定义成员属性
var $name;
var $sex;
var $age;
function __construct($name,$sex,$age){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
//定义成员方法
function say(){
//使用$this访问自己对象内部的成员属性
echo '我的名字:'.$this->name.',性别为:'.$this->sex.',年龄:'.$this->age.'。<br/>';
}
function run(){
echo $this->name.'在running';
}
function __destruct(){
echo 'say goodby '.$this->name.'<br/>';
}
}
$person1=new Person('jack','woman',17);
$person2=new Person('jachin','man',18);
$person3=new Person('juck','woman',19);//实例化类
那么为啥会jack这个先进入的,却最后输出。因为对象引用都是存放在栈内存中,由于栈的先进后出特点,所以最后创建的对象引用会被最先释放。
private 关键字来修饰成员的时候,除了对象内部可以访问之外,其他事无法访问,访问就会出错,private就是私有属性