diff --git "a/\351\222\237\347\255\261\351\235\231/20220517-PHP\346\236\204\351\200\240\345\231\250\345\222\214\344\275\234\344\270\232.md" "b/\351\222\237\347\255\261\351\235\231/20220517-PHP\346\236\204\351\200\240\345\231\250\345\222\214\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..7bff23c9ef84b0e47c316bbdca845dd465d701e7 --- /dev/null +++ "b/\351\222\237\347\255\261\351\235\231/20220517-PHP\346\236\204\351\200\240\345\231\250\345\222\214\344\275\234\344\270\232.md" @@ -0,0 +1,438 @@ +# 课堂笔记 + +### 一、PHP class:类定义 + +#### 1、定义类 + +```php +类的语法: + +[修饰类的关键字] class 类名{ + 类的属性和方法; +} +``` + +#### 2、成员属性 + +```php +语法: + +访问权限修饰符 属性名称 = 属性值; +``` + +##### 常用访问权限修饰符: + +- public:公共的,在类的内部、子类中或者类的外部都可以使用,不受限制; +- protected:受保护的,在类的内部和子类中可以使用,但不能在类的外部使用; +- private:私有的,只能在类的内部使用,在类的外部或子类中都无法使用。 + +```php +//创建一个 Students 类并在类中声明一些成员属性 + +``` + + + +### 二、PHP new:实例化对象 + +#### 1.实例化对象 + +```php +对象的实例化格式: + +变量名 = new 类名(参数数列表); +或 +变量名 = new 类名; + +- 变量名:通过类所创建的一个对象的引用名称,可以通过这个名称来访问对象的成员; +- new:关键字,表明要创建一个新的对象; +- 类名:表示新对象的类型; +- 参数列表:指定类的构造方法用于初始化对象的值,如果类中没存定义构造函数,PHP 会自动创建一个不带参数的默认构造函数。 +``` + + + +#### 2.访问对象中的成员 + +##### 访问对象中成员的语法: + +```php +变量名 = new 类名(参数); //实例化一个类 +变量名 -> 成员属性 = 值; //为成员属性赋值 +变量名 -> 成员属性; //直接获取成员属性的值 +变量名 -> 成员方法(); //访问对象中的成员方法 +``` + +```php + name = 'C语言中文网'; + $student -> url = 'http://c.biancheng.net/php/'; + $student -> title = '实例化对象'; + + echo $student -> name.'
'; + echo $student -> url.'
'; + echo $student -> title.'
'; + $student -> demo(); +?> +``` + + + + + +### 三、PHP __construct():构造函数/方法 + +构造函数(constructor method,也称为构造器)是类中的一种特殊函数,当使用 new 关键字实例化一个对象时,构造函数将会自动调用。 + +```php +// 创建构造函数的语法格式: + +public function __construct(参数列表){ //参数列表是可选的,不需要时可以省略 + ... ... +} +``` + +```php +// 创建一个类,并为其显示的创建构造函数 + name = $str1; + $this -> url = $str2; + $this -> title = $str3; + $this -> demo(); + } + public function demo(){ + echo $this -> name.'
'; + echo $this -> url.'
'; + echo $this -> title.'
'; + } + //代码中我们用到了 $this,它表示当前调用的对象,而且 $this 只能在类的方法中使用 + } + + $object = new Website('C语言中文网','http://c.biancheng.net/php/','构造函数'); +?> +``` + + + +#### PHP $this:当前对象 + +$this -> 成员属性; +$this -> 成员方法(参数列表); + +```php +//使用 $this 调用类中的属性和方法 + name = $name; + $this -> name(); + } + public function name(){ + echo $this -> name.'
'; + $this -> url(); + } + public function url(){ + echo 'http://c.biancheng.net/php/
'; + $this -> title(); + } + public function title(){ + echo 'PHP入门教程
'; + } + } + + $object = new Website('C语言中文网'); +?> +``` + + + +### 四、PHP __destruct():析构函数/方法 + +析构函数的声明格式与构造函数相似,在类中声明析构函数的名称也是固定的,同样以两个下画线开头的方法名`__destruct()`,而且析构函数不能带有任何参数。 + +```php +// 析构方法的格式: + +public function __destruct(){ + ... ... +} + +//PHP 中析构函数并不是很常用,它属于类中可选的一部分,只有需要的时候才在类中声明 +``` + + + +```php +'; + } + public function __destruct(){ + echo '------这里是析构函数------
'; + } + } + + $object = new Website(); + echo 'C语言中文网
'; + echo 'http://c.biancheng.net/php/
'; + echo '脚本运行结束之前会调用对象的析构函数
'; +?> +``` + + + + + + + +### 五、PHP extends:继承 + +```php +语法: +// 在 PHP 中,类的继承需要通过 extends 关键字来实现 +class 子类名 extends 父类名{ + ... ... +} +``` + +在 PHP 中没有多继承,只能使用单继承模式。也就是说,一个类只能直接从另一个类中继承数据。但一个类可以有多个子类。 + +#### 1、继承 public 成员 + +类的成员都有不同的访问权限,由访问控制关键字来控制的。在 PHP 中,父类所有使用 public 修饰的成员均可以被子类继承。 + +```php +//定义一个基类,使用另一类来继承这个基类,同时在尝试使用子类调用基类中的成员方法 +'; + } + public function demo(){ + echo '基类中的成员方法
'; + } + } + + class ClassOne extends Website{ + + } + + class ClassTwo extends Website{ + public function __construct(){ + echo '------子类中的构造函数------
'; + } + } + + $object = new ClassOne(); + $object -> demo(); + $object2 = new ClassTwo(); + $object2 -> demo(); +?> +``` + + + +#### 2、继承 protected 成员 + + + +```php +'; + } + protected function demo(){ + echo '基类中的成员方法
'; + } + } + + class ClassOne extends Website{ + + } + + class ClassTwo extends Website{ + public function __construct(){ + echo '------子类中的构造函数------
'; + } + public function test(){ + $this -> demo(); + } + } + + $object = new ClassOne(); + // $object -> demo(); // 在子类中调用父类使用 protected 修饰的成员方法会报错 + $object2 = new ClassTwo(); + $object2 -> test(); +?> +``` + + + +#### 3、private 成员 + +类中使用 private 修饰的成员被称为私有成员。父类中的私有成员不会被子类继承,因此不能被子类访问到。 + +```php +'; + } + } + + class ClassOne extends Website{ + public function test(){ + $this -> demo(); + } + } + + $object = new ClassOne(); + $object -> test(); +?> +``` + + + +# 作业 + +```php +brand = $brand; + $this->price = $price; + } + + function show() + { + echo "品牌是:" . $this->brand . "
价格是:" . $this->price; + } + + /** + * @return mixed + */ + public function getBrand() + { + return $this->brand; + } + + /** + * @param mixed $brand + */ + public function setBrand($brand): void + { + $this->brand = $brand; + } + + /** + * @return mixed + */ + public function getPrice() + { + return $this->price; + } + + /** + * @param mixed $price + */ + public function setPrice($price): void + { + $this->price = $price; + } + +} +$a=new Car("五菱宏光",50000); +$a->show(); +``` + +```php +cs(); +``` + +```php +a; + } + + /** + * @param mixed $a + */ + public function setA($a): void + { + $this->a = $a; + } + + + +} +``` +