В этой статье рассматриваются функции и использование классов и объектов в 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 method5. Наследование
Наследование является общей особенностью объектно-ориентированного программирования. Автомобиль-это относительно большой класс, который также можно назвать базовым классом. Кроме того, автомобиль также делится на грузовик, легковой автомобиль, 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.