PHP 类

PHP 类

在学习PHP类之前,我们首先需要了解面向对象编程(也称为OOPs)的概念。与其他编程语言如C++、JAVA等不同,PHP也支持面向对象编程的概念。

面向对象编程

它是一种编程概念,其中一切都被视为对象,然后我们使用这些不同的对象来实现软件。

例如,在学校中,所有学生、教职工、行政人员等都可以被视为一种称为学校的对象。

与OOPs和类相关的一些术语: –

编号 术语 定义
1 用户定义的数据类型,结合了变量、局部数据和函数。
2 对象 开发人员创建的本地实例,用于访问类的内容。
3 成员变量 类中定义的变量,仅可由成员函数访问。
4 成员函数 类中定义的函数,通常用于访问数据对象。
5 继承 面向对象编程的主要特性之一,将上级类别的特征和属性给予子类。子类继承了父类中的成员函数和变量。
6 父类 主类通常将一部分特征和属性继承给其子类或其他类。这类别的类也称为超类或基类。
7 子类 子类从其父类或其他类中继承一些特性和属性,这类别的类也称为子类或派生类。
8 多态 面向对象编程的基本概念之一,指的是一个函数可以用于多个不同的目的。函数的名称保持不变,但参数可以不同。
9 重载 一种多态的类型,其中一个函数类别通过不同的实现形式来重载,具体取决于特定类型的参数,或者我们可以通过不同的实现重载相同类型的函数。
10 数据抽象 一种特定类型的数据,隐藏了数据的实现细节。
11 封装 将所有数据和成员函数封装在一起以创建一个新对象的过程。
12 构造函数 当形成同类的对象时,会自动调用的特殊函数。
13 析构函数 当对象超过作用域或被删除时,会自动调用的特殊函数。

在PHP中定义类

PHP类几乎与函数相似,但有一个主要区别,类中包含变量和函数,可以称为对象或类由一组对象构成的单一格式

语法:

<?php
   class myFirstClass {
      var var _ a ;
      var var _ b = " constant string " ;

      function classFunction ( parameter 1 , parameter 2 ) {
         [ . . . . . . . . . . . . . . . ]
      }
      [ . . . . . . . . . . . . . . . ]
   }

?>

参数:-

序号 参数 描述
1 为了声明一个类,我们必须使用关键字”class”,然后是我们要声明的类的名称。
2 变量声明 为了声明一个变量,我们必须使用关键字”var”,然后是”$”约定,最后是被声明的变量的名称。这些也被称为成员变量。也被称为属性。
3 函数声明 为了声明一个函数,我们必须使用关键字”function”,后面跟随被声明函数的名称。这些也被称为成员函数,但这些函数只能类内部访问。也被称为方法。
4 大括号 我们必须用大括号”{}” 将我们的类括起来。

程序1: PHP程序展示使用 PHP类

<!DOCTYPE html>
<html lang = " en ">
<head>
  <meta charse t= " UTF ? 8 ">
  <meta http ? equiv = " X ? UA ? Compatible " content = " IE = edge ">
  <meta name = " viewport " content = " width = device - width, initial ? scale = 1 .0">
  <title> PHP </title>
</head>
<body>
<? Php
class cars {
  // Properties
  var name;
  varcolor;

  // Methods
  function set_name(name) {this->name = name;
  }
  function get_name() {
    returnthis->name;
  }
    function set_color(color) {this->color = color;
  }
  function get_color() {
    returnthis->color;
  }
}

BMW = new cars();audi = new cars();
volvo = new cars();BMW->set_name('BMW ');
BMW->set_color('red');audi->set_name('audi ');
audi->set_color('blue');volvo->set_name('volvo ');
volvo->set_color('black');

echoBMW->get_name();
echo " --> ";
echo BMW->get_color();
echo "<br>";
echoaudi->get_name();
echo " --> ";
echo audi->get_color();
echo "<br>";
echovolvo->get_name();
echo " --> ";
echo $volvo->get_color();
?>
</body>
</html>

输出

BMW --> red
audi --> blue
volvo --> black

在这个程序中,我们声明了一个名为car的类,它有成员变量$name$color。我们声明了成员函数set_name用于向某个创建的对象添加名称,set_color用于添加颜色到该对象,get_name用于打印对象,get_color用于打印对象。为了访问声明的类,我们声明了3个对象$BMW$Audi$Volvo,并使用这些对象调用类cars。为了访问类内部声明的成员函数,我们使用创建的对象和类内部的成员函数,将值作为参数,例如$BMW->set_name("BMW"),$Audi->set_color("blue"),$Volvo->set_name("Volvo"),为了打印结果,我们使用类对象,例如$BMW->get_name(),$Audi->get_color()

$this关键字

$this关键字指代当前对象,该关键字只能在类的成员函数中使用。我们可以通过两种方式使用this关键字:

1)要向声明的变量添加值,我们必须在set_name函数中使用this属性。

例如:

<!DOCTYPE html>
<html>
<body>

<?php
class employee {
  public name;
  varsalary;
  function set_name(name) {this->name = name;
  }
    function set_salary(salary) {
    this->salary =salary;
  }
}
employee_1 = new employee();employee_1->set_name("JOHN");
employee_1->set_salary(" 2000000");

employee_2 = new employee();employee_2->set_name("ROCK");
employee_2->set_salary(" 1200000");

echo employee_1->name;
echoemployee_1->salary;
echo "<br>";
echo employee_2->name;
echoemployee_2->salary;
?>

输出

JOHN 2000000
ROCK 1200000

在上面的示例中,我们使用 $thisset_name和set_salary 一起使用来向已声明的变量name和salary添加新值,然后我们可以使用echo来获取输出。 2)为了向已声明的变量添加值,可以直接更改变量的属性。

例如:

<!DOCTYPE html>
<html>
<body>

<?php
class employee {
  public name;
  varsalary;

}
employee_1 = new employee();employee_1->name = " JOHN ";
employee_1->salary = " 2000000 ";

employee_2 = new employee();employee_2->name = " ROCK ";
employee_2->salary= " 1200000 ";

echo employee_1->name;
echoemployee_1->salary;
echo "<br>";
echo employee_2->name;
echoemployee_2->salary;

?>
</body>
</html>

输出

JOHN 2000000 
ROCK 1200000

在上面的示例中,我们直接使用$ this来与姓名和薪水一起添加新值到已声明的变量姓名和薪水中,之后,我们可以使用echo来输出结果。

程序2: PHP程序展示了 PHP类 的使用。

<!DOCTYPE html>
<html lang = " en ">
<head>
  <meta charse t= " UTF ? 8 ">
  <meta http ? equiv = " X ? UA ? Compatible " content = " IE = edge ">
  <meta name = " viewport " content = " width = device - width, initial ? scale = 1 .0">
  <title> PHP </title>
</head>
<body>
<?php
   class employees {
      /* Member variables */
      var name;
      varsalary;
      var profile;

      /* Member functions */
      function set_name(new){
         this->name =new;
      }

      function get_name(){
         echo this->name ."<br/>";
      }

      function set_salary(new){
         this->salary =new;
      }

      function get_salary(){
         echo this->salary ." <br/>";
      }

      function set_profile(new){
         this->profile =new;
      }
      function get_profile(){
      echo this->profile ." <br/>";
      }

   }employee_1 = new employees;
employee_2 = new employees;employee_3 = new employees;

employee_1->set_name( "JOHN" );employee_1->set_salary( "10000" );
employee_1->set_profile( "audit manager" );employee_1->get_name();
employee_1->get_salary();employee_1->get_profile();
echo "<br/>";

employee_2->set_name( "DOE" );employee_2->set_salary( "150000" );
employee_2->set_profile( "engineer" );employee_2->get_name();
employee_2->get_salary();employee_2->get_profile();
echo "<br/>";

employee_3->set_name( "NINA" );employee_3->set_salary( "70000" );
employee_3->set_profile( "accountant" );employee_3->get_name();
employee_3->get_salary();employee_3->get_profile();
?>
</body>
</html>

输出

JOHN
10000 
audit manager 

DOE
150000 
engineer 

NINA
70000 
accountant

在这个程序中,我们声明了一个名为 employee 的类来维护公司内工作员工的记录,它有成员变量 $name$profile$salary 。我们声明了成员函数 set_name 来给特定创建的对象添加名称, set_salary 来给该对象添加薪水, set_profile 来添加员工的个人资料。我们使用 $this 函数在添加数据时指向当前对象。

为了获取输出,我们必须使用 get_name 函数打印对象的名称,使用 get_salary 打印对象的薪水,使用 get_profile 打印对象的个人资料。

在PHP中创建对象以访问类

$employee_1 = new employees;

$employee_2 = new employees;

$employee_3 = new employees;

为了访问类employee的成员变量和成员函数,我们创建了3个对象,并使用new关键字将它们分配给employees类。

使用对象调用成员函数

$employee_1->set_name("JOHN");$employee_1->set_salary("10000");<$employee_1->set_profile("audit manager");

$employee_2->set_name("DOE");$employee_2->set_salary("150000");$employee_2->set_profile("engineer");

$employee_3->set_name("NINA");$employee_3->set_salary("70000");$employee_3->set_profile("accountant");

创建对象后,我们可以使用这些对象调用类内的成员函数,并使用这些成员函数为成员变量赋值。

$employee_1->get_name();$employee_1->get_salary();$employee_1->get_profile();

$employee_2->get_name();$employee_2->get_salary();$employee_2->get_profile();

$employee_3->get_name();$employee_3->get_salary();$employee_3->get_profile();

我们使用声明的对象调用其他成员函数来打印输出。

构造函数

这些是一种特殊类型的函数,当一个对象被创建时,它们会自动调用。使用_construct( )关键字创建这些函数。

语法:

function __construct( parameter 1, parameter 2 ) {
   this->name = parameter 1;
   this->state = parameter 2;
}

示例:

<!DOCTYPE html>
<html lang = " en ">
<head>
  <meta charse t= " UTF ? 8 ">
  <meta http ? equiv = " X ? UA ? Compatible " content = " IE = edge ">
  <meta name = " viewport " content = " width = device - width, initial ? scale = 1 .0">
  <title> PHP </title>
</head>
<body>
<?php
class newconstructorclass
{
    // Constructor
    function __construct(new){
        echo 'the constructor class has been initiated' ."<br/>" ;this->name = new;
    }
          function get_name(){
         echothis->name ."<br/>";
      }


}

// Create a new object
obj = new newconstructorclass( " john " );obj -> get_name();

obj2 = new newconstructorclass( " doe " );obj2 -> get_name();
obj3 = new newconstructorclass( " mat " );obj3 -> get_name();

?>
</body>
</html>

输出

the constructor class has been initiated
john
the constructor class has been initiated
doe
the constructor class has been initiated
mat

在这个程序中,我们声明了一个类 newconstructorclass ,在类的内部,我们使用 _construct() 函数声明了一个新的构造函数。拥有构造函数类的主要优势是现在我们不需要单独调用set函数来为所有成员变量添加值了。现在我们可以在创建对象的时候一同完成。

析构函数

这些是特殊的函数,当一个对象超出范围或被删除时自动调用。这些函数使用_destruct()关键字创建。

语法:

function __destruct() {
[ . . . . . . . . . . .]
[ . . . . . . . . . . .]
}

示例:

<!DOCTYPE html>
<html lang = " en ">
<head>
  <meta charse t= " UTF ? 8 ">
  <meta http ? equiv = " X ? UA ? Compatible " content = " IE = edge ">
  <meta name = " viewport " content = " width = device - width, initial ? scale = 1 .0">
  <title> PHP </title>
</head>
<body>
<?php

class newdestructorclass
{
    // Destructor
    public function __destruct(){
        echo 'The class ' . __CLASS__ . '" was automatically destroyed when the created object does not have a scope to initiate';
    }

}

// Create a new object
$obj = new newdestructorclass;
?>   
</body>
</html>

输出

The class "newdestructorclass" was automatically destroyed when the created object did not have a scope to initiate

在这个程序中,我们声明了一个类 newdestructorclass 。我们在类中使用 _destruct() 函数声明了一个析构函数。它不包含任何参数。当对象没有范围可用时,它会自动调用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程