文件名称:
布尔教育PHP大狮班-面向对象.pdf
开发工具:
文件大小: 1mb
下载次数: 0
上传时间: 2019-08-24
详细说明:布尔教育PHP ,布尔教育PHP大狮班-面向对象.pdfclassStul i
stu:类名称
public Ssn =0001
ssn:属性名
public Sname =lisi;
ks0:方法
public function ks0
echo我叫is我来考试;
类名不区分大小写,
Sstu new StuO
echo$stu->sn;//调用属性
但书写和调用时依然
stu->ks(0;/调用方法
要大小写规范
5、属性不能是表达式?
PHP5.6之前类属性只能是直接值或常量,而不能是表达式的结果
函数调用,运算
PHP5.6开始允许使用包含数字、字符串字面值和常量的标量表达式(如数学运算,比较
运算等)
高中数学知识:标量和矢量……
class MysQL t
//就是想赋给属性随机值怎么办?
// public$rand=rand(10,100);//函数调用一报错
public srand=1+2;//数学运算,5.6以后,支持
//初始化效果,可以在构造函数中完成(后面讲到,先跳过)
public function constructo)t
sthis->rand=mt rand(
6、类与对象的关系
类是"大量的,同类事物共同特点的抽象描述
而对象,是以类做模板形成的一个具体实例
class Af
public name =lisi
public function fei()t
echo qi
//new个对象时,内存中会开辟一块空间,存放属性;
sren1= new A()
sshou2 new A():
/给ren1中的属性重新复制,类中的属性值不变,改变的是新开辟空间的属性
srenl->name =wang ';
echo sren1->name:
//方法调用,执行的是类中的方法,但是,PHP内部会记录是哪个对象在调用方法
echo sshou2->fei()i
class Human t
public Gender =male;
public height 30,
内存中有1”个
Human即使没有实
public function borno i
gender: male
echo'wawa’;
例化也存在
height: 30
多san= new Human()
sisi new Humano)
Ssan->height =3:
echo Ssan->height ,'
>slisi-height;// 35, 30
gender: male
height: 30
注意:每个实例有自己的属性包在一个结构中可以粗略理
gender: male
解为数组)但是不包含方法
height: 30
在PHP中实例知道自己是哪个类实例化得来的
当调用方法时,会到自己所属的类中找相关方法并调用
7、this是谁?
< php
class Rent
public name =lisi
public function fly()t
echo sthis->name. qifei:
sren new Ren()
sren->name =.SS i
sren->fly()
谁调用就是谁
public Sname = 'i
name lisi
olic function sayHelloo)[
echo hello, I am, sthis->name ,'
name = wangwu
slisi->sayHello(;
name.wangwu
Swangwu->sayHello;
Sthis是一个虚拟变量专门指“当前调用的对象
请画图
8、封装mysq类
注:原生 MySQL AP自PHP55.0起已废弃,并在将来会被移除。此处选用 mysqli
?php
class MySQL t
public slink= null
public function conn()t
scfg array
host =>' loca lhost
user=> root
passwor
db
test
charset=> utf8
sthis->link= mysqli_connect(scfg[ host scfg['user '], $cfg
I' password',$['db'1);
public function query(ssql)i
return mysqli query(sthis->link, Ssql):
public function getAll(Ssql)t
srs= sthis-query ($sql)i
sdata array():
while(row= mysqli fetch assoc(srs))t
Sdata[
snow?
return sdata
sdb new MySQL():
Sdb->conn()
Suser $db->getAll('select *k from user )i
var dump(suser)
每次用都要实例化去调用,很烦人,我想,一旦实例化就会自动连接数据库,怎么
办?
9、构造方法与析构方法
构造方法: construct0
是指在new对象时,自动触发的方法
就像一个婴儿刚出生就会哭一样
class Human t
public_construct()t
echo"呱呱坠地';
baby= new Human();//呱呱坠地
利用比方法可以完成一些初始化工作
比如mysq类中自动连接与选库
构造方法传参
在创建实例时,可以传递参数如:
class stu i
public Sname:
public sage:
public function construct(sname, Sage)t
sthis->name Sname
sthis->age sage:
}
slily new Stu('lily'
12);
lucy new Stu('lucy, 14)
poly new Stu( ' poly', 15);
析构方法: destruct0
在对象销毁时,自动触发
//接上面的Stu类,新增 destruct()方法
function destructor
echo sthis->name
bye
i
对象什么时间被“销毁"?
slily =3:
unset(lucy)
echo ----
i
存储对象的变量被赋值为其他值,
或变量被 unset,
或页面结束时,都会被销毁
构造方法的旧式声明
一个和类名同名的方法,被理解为构造方法;
老旧的PHP代码中会遇到;遇到时认识即可;
10、类的封装性
封装:即禁止某些方法/属性,不充许外部调用
并开放部分方法,来间接调用
比如银行的ATM,你可以输入密码"检测"自己的密码是否正确,
但不能"查询"自己的密码.代码:
class ATM i
protected function getPass()t
return 123456
public function checkPass( $passwd)t
return $passwd
sthis->getPass():
satm new ATM()i
satm->checkPass( 123456)
atm-> getPass();//出错: fatal error
这个例子,如果用面向过程的函数来开发,则很难对gePa5做屏蔽
11、类的继承性
http:/apidoc.sinaapp.com/class-saemysql.html
新浪SAE平台,给我们提供了 SaeMySOL类,我们可以直接使用
但我如果觉得这个类的某个方法不好,或者缺少某个方法,怎么办?
我们不能定义同名函数来覆盖,因为PHP不允许函数重名
";
public function geterror ()t
return哈哈,错了
}
public function getLine()t
return array('a
b
)
}
class MyMysql extends Mysql t
public function geterror()t
return'呵呵,错了;
public function getRow()t
return sthis->getline():
sa new MyMysgl(
//调用子类方法,子类中的方法,通过this调用父类的方法
var_dump(sa->getRow());
//实例化的子类对象,可以直接调用父类中的方法
var dump(sa->getLine());
//子类重写父类中的方法后,实例化的对象默认调用子类重写后的方法
var dump(sa->getError())
//子类也可以直接调用父类的属性
var- dump(sa->bb)
继承的好处:
子类可以继承父类的属性及方法,并允许覆盖父类的方法或新增方法.
通过自然界的比喻就是通过进化"来获得新特性,同时不影响旧物种.
老式电话机-->手机--智能机
电话>手机->智能机
通话功能脉相传,
同时逐步增加了短信游戏等功能
然后古老的座机仍未消失
这就是继承的好处
司出
12、继承的语法
class Parclass i
}
class Subclass extends Parclass t
}
PHP是单继承的:子类只能继承一个父类
C#、C++多继承:子类可以继承自多个父类
13、fna类和fna方法
fina类不能被继承,血ina方法不能被子类重写
//此类不能被继承
final class TJ i
class XTJ extends T]
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.