В этой статье рассматриваются функции и использование классов и объектов в 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.