🎼个人主页:金灰
😎作者简介:一名简单的大一学生;易编橙·终身成长社群的嘉宾.✨
专注网络空间安全服务,期待与您的交流分享~
感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️
🍊易编橙·终身成长社群🍊 : http://t.csdnimg.cn/iSLaP 期待您的加入~
免责声明:本文仅做分享...
目录
类与对象
//用户类--属性和方法的集合
class user{
public $username; //共有属性
private $password; //私有属性
//公共方法
public login(){
echo $this->password;
}
//公共方法
public logout(){
}
}
// ------------
class user{
public $username; //共有属性
private $password; //私有属性
protected $userType;
public static $platform="ctf";
//公共方法
public login(){
echo $this->password;
}
//公共方法
public logout(){
}
}
类的定义,我们可以认为是设计图.
类的对象-
//实例化一个类 --> 从设计图转换为一个可以用的变量,变量类型不再是字符串或者数字,而是一个对象.
$u = new user(); 每个对象中,静态属性值,不变
$p = new user();
$u->username;
$p->username;
//外部不能直接引用password (private $password; //私有属性
类和对象的关系,类似于 设计图(蓝图) 与 生成出的产品 之间的关系.
一个设计图(类)-->多个产品(对象)
属性的权限-划分:
1 public 权限 外部可以通过箭头访问到
2 private 权限 内部通过 $this->username 访问到
3 protected 权限 表示 自身及其子类 和父类 能够访问
类的继承:
例:
普通用户 vip用户 管理员用户
-->都属于user类
//通过extends直接继承(获得)类的内容
class normalUser extends user{
public $score;
public function play(){
echo $this->userType;
}
}
$n = new normalUser();
----------
class vipUser extends user{
public $score;
}
----------
class adminUser extends user{
public $score;
}
方法的属性修饰符:
public
private
protected
方法的修饰:
静态属性 static //一旦修饰为静态,就写死了,不能改. --修饰方法的话,直接通过类名调用.
final属性 final //修饰方法时,父类的方法>子类的方法.
static修饰
final修饰
class user{
public $username; //共有属性
private $password; //私有属性
protected $userType;
public static $platform="ctf";
public function __construct($username,$password){ //类的构造方法
$this->username = $username;
$this->password = $password;
}
//公共方法
public final function login(){
echo $this->password;
}
//公共方法
public function logout(){
}
}
class normalUser extends user{
public $score;
public function play(){
echo $this->userType;
}
}
public function login(){
echo "i am normalUser";
}
//类的静态方法
public static function go(){
echo "gogoog!";
}
}
$n = new normalUser("admin","admin666");
$n->login();
$n = new normalUser("admin","admin666");
$n->login();
类的分类:
1 普通类 没有任何修饰
class user{
public function login(){
}
public function logout(){
}
}
2 抽象类
// 类里面有一个abstract方法就是抽象类.(只定义无内容)
abstract class user{ //对类也进行标识.
public function login(){
}
public function logout(){
}
abstract function play();
}
类里面的方法,有些是有详细的实现,有些就只有个方法名字,没具体实现.
抽象类 不能被 new 也就是不能被直接 实例化对象.
-> 在父子类中,父类用的抽象方法,子类就必须要声明其方法的实现,
--不想实现的话,子类就把自己也变成抽象类(抽象方法)
3 接口 interface
(所有方法都是抽象方法时就不需要写abstract )
接口-->为了实现多继承效果
class xxx extends user implements 接口 // 可以实现多个接口
interface service1(){
}
interface service2(){
}
class xxx extends user implements service1,service2{
}
4 trait
(php5.4之后)
可以认为是代码段 ,方便复制粘贴
// 用于普遍操作,
//一般不涉及类的属性的读取操作--不使用属性
trait math{
function add(){
}
function mub(){
}
}
class xxx(){
use math;
}
5 匿名类
不打算用/用1次..
//一次性匿名类的例子(类名都不配拥有,给你个属性直接调用)
$v->play(new class{
public $username="我是匿名类";
});
$a = new class{
public $name="1";
public $passwd="大";
}
//类似于 data伪协议.