类是对象的模板,定义属性和方法;对象是类的实例,通过new创建并用->访问成员;$this指向当前对象,用于方法内访问属性和方法;构造/析构方法管理对象生命周期;public/protected/private控制成员可见性。

如果您刚开始接触PHP编程,发现代码中频繁出现class、new、$this等关键字,却不清楚它们如何协同工作来组织程序逻辑,则可能是由于对面向对象的基本构成单元——类与对象的关系缺乏直观理解。以下是帮助您建立这一认知的基础说明:
一、类是对象的模板和蓝图
类不是实际运行中的实体,而是用于定义一组属性(变量)和方法(函数)的结构化描述。它规定了某一类事物应具备哪些数据特征和行为能力,但自身不占用内存空间,也不能直接执行操作。
1、使用class关键字声明一个类,后跟类名,类名通常采用大驼峰命名法,例如:class User { }。
2、在花括号内部,用public、private或protected修饰符声明属性,例如:public $name = 'guest';。
立即学习“PHP免费学习笔记(深入)”;
3、在同一花括号内定义方法,即以function关键字开头的函数,例如:public function sayHello() { return 'Hello'; }。
二、对象是类的具体实例
对象是通过new关键字依据类创建出来的运行时实体,每个对象都独立占有内存,拥有自己的一套属性值,并可调用类中定义的方法。同一个类可以生成多个对象,彼此间属性互不影响。
1、使用new运算符加类名创建对象,例如:$user1 = new User();。
2、通过对象操作符->访问其公共属性,例如:echo $user1->name;。
3、同样使用->调用该对象的方法,例如:echo $user1->sayHello();。
三、$this关键字标识当前对象上下文
$this是一个特殊的伪变量,只能在类的内部方法中使用,它始终指向调用该方法的那个具体对象实例,用于区分局部变量与当前对象的属性或方法。
1、在方法内部读取当前对象的属性时,必须写成:$this->name,而非单纯的$name。
2、在方法内部调用当前对象的其他方法时,需写成:$this->sayHello(),而非sayHello()。
3、若在构造方法__construct()中初始化属性,应使用$this->属性名赋值,例如:$this->name = $name;。
四、构造方法和析构方法自动响应对象生命周期
构造方法__construct()在对象被创建后立即执行,常用于初始化属性;析构方法__destruct()在对象被销毁前自动调用,可用于释放资源或清理操作。
1、定义构造方法时,不带返回值声明,参数可选,例如:public function __construct($name) { $this->name = $name; }。
2、创建对象时可直接传参,例如:$user2 = new User('Alice');。
3、析构方法无需手动调用,仅在对象不再被引用且垃圾回收启动时触发,例如:public function __destruct() { echo 'User对象已被销毁'; }。
五、访问控制修饰符决定成员可见性范围
public、protected、private三种修饰符限制类成员(属性和方法)在不同作用域下的可访问性,从而实现封装性,保护内部实现细节不被随意修改。
1、public成员可在任何位置访问,包括类外部、子类及实例中,例如:public $email;。
2、protected成员仅限本类及其子类中访问,不能通过对象实例直接调用,例如:protected $password;。
3、private成员仅限本类内部访问,子类也无法继承或访问,例如:private $sessionId;。










