【PHP】面向对象编程

简介

这篇文章将介绍面向对象编程的基础概念。

面向对象编程(OOP)是一种编程方法论。

面向对象编程是一种用于提高编程效率的方法和思想。
它通过将程序组织成类(概念)的单位,并基于类创建对象(实例),通过实例之间的交互来编写程序的流程。

举个例子,我们每个人都可以被看作是人类这个类(概念)的实例(对象)。而人类这个类具有年龄、身高、性别等数据(属性),以及走路、睡觉、吃饭等行为(方法)存在。

班级 jí)

在面向对象编程中,通过使用类的概念,我们可以根据这个类来创建实例并编写程序。
接下来,让我们来定义一个类。

<?php
 class Human {   classというキーワードの後ろにクラス名

  }
?>

尽管还没有填充内容,但是我们已经定义了一个名为”Human”的类。
根据帕斯卡命名规则,我们将类名写成由单词间的大写字母分隔的形式。

在中文中,可以这样翻译:
类名将表示该类。在上面,我们创建了表示人类的Human类。
在大括号中,您可以编写表示属性、方法和在实例生成时进行初始化的构造函数的数据。

财产

属性是表示实例状态的东西,简单来说就是变量。
需要为这个变量指定访问修饰符。访问修饰符是指定属性是否可以从类的外部进行访问、赋值等操作,或者只能从类的内部进行访问的东西。
访问修饰符有以下三种:

・public  任何地方可访问
・private  只能在该类内部访问
・protected  可从该类内部和继承类中访问

让我们定义属性。

<?php
 class Human{
   public $name; 
   private $birthday;
   protected $gender;
 }
?>

通过这样就可以在Human类中定义三个属性。
顺便一提,类中定义的数据称为属性、成员变量、实例变量、字段,都是指同一意思。

方法

方法是用来定义处理的东西,简单来说就是函数。
与属性一样,方法也可以指定访问修饰符。如果省略访问修饰符,则默认为public。

让我们定义一个方法。

<?php
 class Human{
   public $name; 
   private $birthday;
   protected $gender;
 
   public function walk() {  
     echo '歩きます';
   }
   public function eat() {
     echo '食べます';
   }
}
?>

我们成功定义了名为walk和eat的方法。方法与函数类似,可以接受临时参数,并且可以通过return语句指定返回值。
当我们想要从外部调用该方法时,应该使用public进行指定。

构造函数 实例化

在创建类的实例时,会首先执行的特殊方法是构造函数。构造函数主要用于在生成实例时进行初始化。

<?php
 class Human{
   public $name; 
   private $birthday;
   protected $gender;
 
   public function walk() {  
     echo '歩きます';
   }
   public function eat() {
     echo '食べます';
   }
 }

 $human = new Human();  インスタンス生成
?>

通过在类名前面加上关键字new,可以生成一个实例。
在上面的例子中,可以从Human类的概念中创建一个名为$human的人的实例。
具体来说,实例被分配给变量$human。
然后,创建的实例可以调用方法。

<?php
 class Human{
   public $name; 
   private $birthday;
   protected $gender;
 
   public function walk() {  
     echo '歩きます';
   }
   public function eat() {
     echo '食べます';
   }
 }

 $human = new Human();  インスタンス生成
 $human -> eat();  ⇦ メソッド呼び出し
 $human -> walk();  ⇦ メソッド呼び出し
?>

在分配了实例的变量之后,可以使用单箭头和方法名()来调用方法。
如果在浏览器中进行确认,应该会输出“吃饭,走路”。

在创建实例时,我使用了关键字new,这将执行构造函数。

Human类的属性目前还没有任何值。因此将使用构造函数来分配值。

<?php
 class Human{
   public $name; 
   private $birthday;
   protected $gender;
  
  public function __construct($name, $birthday, $gender) {  コンストラクタ
     
   }
  
   public function walk() {  
     echo '歩きます';
   }
   public function eat() {
     echo '食べます';
   }
 }

 $human = new Human('みうら', '1998年5月10日', '男');  インスタンス生成時にデフォルトのコンストラクタが呼び出される
 $human -> eat();  
 $human -> walk(); 
?>

通过定义构造函数,可以覆盖实例生成时的默认构造函数。
通过为构造函数提供参数,在new Human时写入实际参数。
但请注意,构造函数的参数(如$name)变量将与上面的属性不同。
因此,需要将构造函数的参数值赋给属性。

构造函数的使用

$human = new Human('みうら', '1998年5月10日', '男');

顺便一提,在PHP中,有一些特殊的方法被定义为以两个下划线开头。当我们自己定义方法时,也可以定义以两个下划线开头的方法,但容易区分自己定义的方法和PHP预先准备的方法,所以应该避免使用以两个下划线开头的方法。这种函数被称为魔术方法。

这个

在这里,我们将对属性进行赋值。
所使用的是$this。这是一个变量,其中包含了接收器(receiver)实例。
接收器(receiver)是指正在创建的实例。

public function __construct($name, $birthday, $gender) {  
    $this ->name = $name;
    $this ->birtday = $birtday;
    $this ->gender = $gender; 
   }

我将刚才提供的实际参数分配给$this的名称。

这是表达自己的关键词。所以$this ->name等表示实例的属性。
虽然使用了单箭头,但如果将其视为表示”的”的连接词,就更容易理解了。

bannerAds