Рубрики
Uncategorized

Интерпретация функций и примеры использования классов и объектов в PHP

Автор оригинала: David Wong.

В этой статье рассматриваются функции и использование классов и объектов в PHP. Подробности заключаются в следующем:

1. Класс и объект

Класс-это основная концепция объектно-ориентированного программирования. Это структурное описание определенного рода вещей и абстрактное понятие. Объект-это конкретный экземпляр определенного рода вещей и конкретная вещь

Объект создается с помощью нового ключевого слова, например, автомобиль может быть абстрагирован как класс. Автомобиль имеет такие свойства, как название, шина, скорость и вес, и может иметь такие методы работы, как сдвиг, вперед и назад.

//Define a car class
class Car {
  $name ='car ';
  function getName() {
    return $this->name;
  }
}
//Object is instantiated by the new keyword 
$car = new Car();
echo $car->getName();
2. Атрибуты и объекты

Переменные, определенные в классе, называются свойствами. Объявление атрибута начинается с ключевых слов public, protected или private, за которыми следует объявление общей переменной. Свойство может устанавливать значение инициализации по умолчанию, и значение по умолчанию должно быть постоянным.

Метод – это функция в классе. Часто мы не можем определить разницу между методом и функцией. В процессно-ориентированном программировании функция называется функцией, а в объектно-ориентированном программировании функция называется методом.

Ключевые слова управления доступом имеют следующие значения:

  • Общедоступный: общедоступный, доступный в любом месте
  • Защищено: защищено, внутри самого класса его подкласс и родительский класс могут получить доступ
  • Частный: частный, доступный в самом классе

Управление доступом атрибута класса должно быть определено, то есть ключевое слово должно быть записано и определено как один из трех методов класса, который не записывает ключевые слова, по умолчанию он является общедоступным

class Car {
  public $speed = 0;
  //Add speedup method to add 10 to speed
  public function speedUp(){
    $this->speed += 10;
  }
}
//Creating objects
$car = new Car();
//Getting class properties and methods through objects
$car->speedUp();
echo $car->speed;
3. Конструкторы и деструкторы

PHP 5 может использоваться в классах__ Construct () определяет конструктор. Класс с конструктором будет вызывать эту функцию каждый раз при создании объекта. Поэтому он часто используется для инициализации объекта при его создании.

Если определено в подклассе__ Конструкция не вызывает__ конструкцию. Если вам нужно одновременно вызвать конструктор родительского класса, вам необходимо использовать явный вызов parent::__ для построения().

Аналогично, PHP 5 поддерживает деструкторы, используя__ Destruct (). Деструктор относится к функции, которая будет выполняться, когда все ссылки на объект будут удалены или объект будет явно уничтожен.

class Car {
  function __construct() {
    Print "constructor is called";
  }
  function __destruct() {
    Print "destructor is called";
  }
}
$car = new car(); // the constructor is called when instantiated
After using echo ', prepare to destroy the car object;
Unset ($car); // destructor will be called when destroying

После выполнения PHP – кода объект будет переработан и уничтожен автоматически, поэтому нет необходимости уничтожать объект явно.

4. Статические свойства и статические методы
  • Статические свойства:
Public / protected / private static $variable name

Вместо создания экземпляра класса вызовите имя класса:: $имя переменной напрямую, однако после создания экземпляра имя переменной объекта – > $не допускается

  • Статический метод
Public / protected / private static function method name ()

Вместо создания экземпляра класса вызовите имя класса:: имя метода () После создания экземпляра, Объект > имя метода () Фиктивная переменная $this не допускается в статических методах. Вы можете использовать self, parent, static для внутреннего вызова статических методов и свойств.

class Car {
  private static $speed = 10;
  
  public static function getSpeed() {
    return self::$speed;
  }
  
  public static function speedUp() {
    return self::$speed+=10;
  }
}
class BigCar extends Car {
  public static function start() {
    parent::speedUp();
  }
}

BigCar::start();
echo BigCar::getSpeed();

Если конструктор определен как частный метод, ему не разрешается создавать экземпляры объектов напрямую. В это время он обычно создается с помощью статических методов. В режиме проектирования этот метод часто используется для управления созданием объектов. Например, одноэлементный режим позволяет использовать только один глобально уникальный объект.

class Car {
  private function __construct() {
    echo 'object create';
  }

  private static $_object = null;
  public static function getInstance() {
    if (empty(self::$_object)) {
      self::$_ Object = new car(); // internal methods can call private methods, so you can create objects here
    }
    return self::$_object;
  }
}
$car = new car(); // direct instantiation of objects is not allowed here
$car = car:: getinstance(); // get an instance by static method
5. Наследование

Наследование является общей особенностью объектно-ориентированного программирования. Автомобиль-это относительно большой класс, который также можно назвать базовым классом. Кроме того, автомобиль также делится на грузовик, легковой автомобиль, Dongfeng, BMW и так далее. Поскольку эти подклассы имеют много одинаковых свойств и методов, мы можем использовать унаследованный класс automobile для совместного использования этих свойств и методов и реализации повторного использования кода.

class Car {
  Public $speed = 0; // the starting speed of the car is 0
  
  public function speedUp() {
    $this->speed += 10;
    return $this->speed;
  }
}
//Create a truck class, extend car class, and cover speedup method to make speed accumulate 50
class Truck extends Car{
  public function speedUp(){
    parent::speedUp();
    $this->speed += 50;
    return $this->speed;
  }
}

$car = new Truck();
$car->speedUp();
echo $car->speed;
5. Тяжелая нагрузка

Перегрузка в PHP относится к динамическому созданию свойств и методов, которое реализуется с помощью магических методов.

  • Перегрузка свойства передается__ set,__ get,__ set,__ Unset для назначения, чтения, определения того, установлен атрибут или нет, и уничтожения атрибута.
class Car {
  private $ary = array();
  
  public function __set($key, $val) {
    $this->ary[$key] = $val;
  }
  
  public function __get($key) {
    if (isset($this->ary[$key])) {
      return $this->ary[$key];
    }
    return null;
  }
  
  public function __isset($key) {
    if (isset($this->ary[$key])) {
      return true;
    }
    return false;
  }
  
  public function __unset($key) {
    unset($this->ary[$key]);
  }
}
$car = new Car();
$car - > name ='car '; // the name attribute is created and assigned dynamically
echo $car->name;
if ($car->age){
  Echo 'yes';
}else{
  Echo 'none';
}
unset($car->name);
var_dump($car->name);
  • Перегрузка метода передана__ Вызовом. При вызове несуществующего метода он будет преобразован в параметр call__ Метод вызова, который используется при вызове статического метода, который не существует__ Callstatic перегрузка.
class Car {
  public $speed = 0;
  
  public function __call($name, $args) {
    if ($name == 'speedUp') {
      $this->speed += 10;
    }
  }
}
$car = new Car();
$car - > speedup(); // calling nonexistent methods will use overloading
echo $car->speed;
6. Расширенные функции

Сравнение объектов: когда все свойства двух экземпляров одного и того же класса равны, вы можете использовать оператор сравнения judge. Когда вам нужно определить, являются ли две переменные ссылками на один и тот же объект, вы можете использовать соответствующий оператор = =.

class Car {
}
$a = new Car();
$b = new Car();
if ($a == $b) echo '==';  //true
if ($a === $b) echo '==='; //false

Копия объекта. В некоторых особых случаях вы можете скопировать объект с помощью ключевого слова clone__ Метод clone вызывается для установки значения свойства с помощью этого волшебного метода.

class Car {
  public $name = 'car';
  
  public function __clone() {
    $obj = new Car();
    $obj->name = $this->name;
  }
}
$a = new Car();
$a->name = 'new car';
$b = clone $a;
var_dump($b);

Сериализация объекта, вы можете сериализовать объект в строку с помощью метода сериализации, который используется для хранения или передачи данных, а затем использовать несериализацию для удаления сериализации строки в объект, когда это необходимо.

class Car {
  public $name = 'car';
}
$a = new Car();
$STR = Serialize ($a); // the object is serialized into a string
echo $str.'
'; $B = unserialize ($STR); // deserialize to object var_dump($b);

Подробнее о содержании, связанном с PHP, заинтересованные читатели могут ознакомиться со специальными разделами этого веб-сайта: “Вводный учебник по объектно-ориентированному программированию PHP”, “Энциклопедия навыков работы с массивами PHP”, “Вводный учебник по базовой грамматике PHP”, “Краткое описание операций PHP и использования операторов”, “Краткое описание использования строк PHP”, “Вводный учебник по работе с базой данных PHP + MySQL” и “Общая работа с базой данных PHP” Краткое описание навыков написания

Я надеюсь, что эта статья будет полезна для программирования на PHP.