# PHP类与对象:class 和 new 的基本用法
## 引言
在PHP编程中,类和对象是面向对象编程(OOP)的核心概念。掌握class和new的使用方法是每个PHP开发者必备的技能。本文将详细介绍PHP中类和对象的基本概念以及如何使用它们。
## 什么是类和对象
- **类(Class)**:类是对象的蓝图或模板,它定义了一组属性和方法
- **对象(Object)**:对象是类的实例,是根据类创建的具体实体
## 定义类(Class)
在PHP中,我们使用`class`关键字来定义一个类:
```php
class Person {
// 类属性(变量)
public $name;
public $age;
// 类方法(函数)
public function sayHello() {
echo "Hello, my name is " . $this->name;
}
}
```
### 类的基本组成部分
1. **类名**:遵循大驼峰命名法(如Person, UserModel)
2. **属性**:类的变量,用来存储数据
3. **方法**:类的函数,定义类的行为
## 创建对象(new)
使用`new`关键字可以创建一个类的实例(对象):
```php
$person1 = new Person();
$person2 = new Person();
```
### 访问对象属性和方法
```php
// 设置属性
$person1->name = "张三";
$person1->age = 25;
// 调用方法
$person1->sayHello(); // 输出: Hello, my name is 张三
```
## 构造函数(__construct)
构造函数是在创建对象时自动调用的特殊方法:
```php
class Person {
public $name;
public $age;
// 构造函数
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function sayHello() {
echo "Hello, my name is " . $this->name;
}
}
// 创建对象时传递参数
$person = new Person("李四", 30);
$person->sayHello(); // 输出: Hello, my name is 李四
```
## 访问控制(public, protected, private)
PHP提供了三种访问控制修饰符:
1. **public**:在任何地方都可访问
2. **protected**:在类内部和子类中可访问
3. **private**:仅在类内部可访问
```php
class AccessExample {
public $publicProperty = 'Public';
protected $protectedProperty = 'Protected';
private $privateProperty = 'Private';
public function showProperties() {
echo $this->publicProperty; // 可访问
echo $this->protectedProperty; // 可访问
echo $this->privateProperty; // 可访问
}
}
$example = new AccessExample();
echo $example->publicProperty; // 可访问
// echo $example->protectedProperty; // 报错
// echo $example->privateProperty; // 报错
$example->showProperties(); // 全部可访问
```
## 静态属性和方法
使用`static`关键字定义静态成员,它们属于类而不是某个对象:
```php
class MathOperations {
public static $pi = 3.14159;
public static function square($num) {
return $num * $num;
}
}
// 访问静态属性
echo MathOperations::$pi; // 输出: 3.14159
// 调用静态方法
echo MathOperations::square(5); // 输出: 25
```
## 继承(extends)
PHP支持单继承,使用`extends`关键字:
```php
class Animal {
public $name;
public function eat() {
echo $this->name . " is eating.";
}
}
class Dog extends Animal {
public function bark() {
echo $this->name . " is barking!";
}
}
$dog = new Dog();
$dog->name = "Buddy";
$dog->eat(); // 继承自Animal类
$dog->bark(); // Dog类自己的方法
```
## 总结
- `class`用于定义类的结构和行为
- `new`用于创建类的实例(对象)
- 构造函数`__construct`在对象创建时自动调用
- 访问控制修饰符(public/protected/private)控制成员的可见性
- 静态成员属于类而非对象
- `extends`实现类继承
掌握这些基本概念后,你就可以开始在PHP中使用面向对象编程了。在实际开发中,合理地使用类和对象可以使代码更加模块化、可维护性更高。