Php construct with params

Php construct with params

Конструкторы представляют специальные методы, которые выполняются при создании объекта и служат для начальной инициализации его свойств. Для создания конструктора надо объявить функцию с именем __construct (с двумя подчеркиваниями впереди):

name = $name; $this->age = $age; > function displayInfo() < echo "Name: $this->name; Age: $this->age
"; > > $tom = new Person("Tom", 36); $tom -> displayInfo(); $bob = new Person("Bob", 41); $bob -> displayInfo(); ?>

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

Name: Tom; Age: 36 Name: Bob; Age: 41

Параметры по умолчанию

Чтобы сделать конструктор более гибким, мы можем обозначить один или несколько параметров в качестве необязательных. Тогда при создании объекта необязательно указывать все параметры. Например, изменим конструктор следующим образом:

function __construct($name="Том", $age=36) < $this->name = $name; $this->age = $age; >

Таким образом, если не будут заданы параметры, вместо них будут использоваться значения «Том» и 36. И теперь мы можем создать объект Person несколькими способами:

name = $name; $this->age = $age; > function displayInfo() < echo "Name: $this->name; Age: $this->age
"; > > $tom = new Person(); $tom -> displayInfo(); $bob = new Person("Bob"); $bob -> displayInfo(); $sam = new Person("Sam", 29); $sam -> displayInfo(); ?>
Name: Том; Age: 36 Name: Bob; Age: 36 Name: Sam; Age: 29

Объявление свойств через конструктор

Начиная с версии PHP 8 в языке появилась возможность определить свойства через список параметров конструктора. Любой параметр конструктора, который имеет модификатор доступа, например, public , будет автоматически представлять новое свойство.

Например, определим свойства name и age напрямую через параметры конструктора:

name = $name; $this->age = $age; > function displayInfo() < echo "Name: $this->name; Age: $this->age
"; > > $tom = new Person("Tom", 36); $tom -> displayInfo(); ?>

Хотя в данном случае в классе явным образом не определены свойства name и age, но поскольку в списке параметров конструктора заданы параметры с такими именами и с модификатором доступа (в данном случае public ), то у класса автоматически создаются подобные переменные.

Читайте также:  Mysql queries using php

Можно сочетать оба способа объявления переменных:

class Person < public $name; function __construct($name, public $age) < $this->name = $name; $this->age = $age; > function displayInfo() < echo "Name: $this->name; Age: $this->age
"; > >

При подобном объявлении свойств также можно передавать им значения по умолчанию:

class Person < public $name; function __construct($name = "Sam", public $age = 33) < $this->name = $name; $this->age = $age; > function displayInfo() < echo "Name: $this->name; Age: $this->age
"; > >

Деструкторы

Деструкторы служат для освобождения ресурсов, используемых программой — для освобождения открытых файлов, открытых подключений к базам данных и т.д. Деструктор объекта вызывается самим интерпретатором PHP после потери последней ссылки на данный объект в программе.

Деструктор определяется с помощью функции __destruct (два подчеркивания впереди):

class Person < public $name, $age; function __construct($name, $age) < $this->name = $name; $this->age = $age; > function getInfo() < echo "Имя: $this->name ; Возраст: $this->age 
"; > function __destruct() < echo "Вызов деструктора"; >>

Функция деструктора определяется без параметров, и когда на объект не останется ссылок в программе, он будет уничтожен, и при этом будет вызван деструктор.

Источник

PHP Programs to Demonstrate Constructor With Parameters

This tutorial describes the constructor method for classes in PHP. It shows through an example program how the constructor works in a class and how to pass parameters to it.

What Is a Class Constructor?

PHP allows developers to declare constructor methods for classes. A constructor is a generic method associated with a class that gets called automatically for each newly created object of the class instance. It is like other member methods in a class, the only difference being that it is only for specific instructions that must be executed when creating class instances.

Pass Arguments to a Constructor

Like any other function, a constructor can also define some arguments that the developer may need later in the program. And if a constructor doesn’t have the required arguments or a class doesn’t need a constructor, it can also be written empty, or the best option is not to write it because a constructor is mainly used to create and initialize objects.

Читайте также:  Openserver редактирование php ini

PHP script to demonstrate constructor method with Parameters:

Name = $UserName; $this->Age = $UserAge; > > /*Create the class object*/ $Obj1 = new Example("Tom", 22); $Obj2 = new Example("Dick", 26); $Obj3 = new Example("Harry", 28); /*Print*/ print_r([$Obj1, $Obj2, $Obj3]); ?>
Array ( [0] => Example Object ( [Name] => Tom [Age] => 22 ) [1] => Example Object ( [Name] => Dick [Age] => 26 ) [2] => Example Object ( [Name] => Harry [Age] => 28 ) )

Источник

Конструктор PHP

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

Конструктор класса PHP может содержать столько аргументов или параметров, сколько необходимо. Также можно определить конструктор вообще без параметров.

Важно отметить, что PHP-конструктор вызывается только один раз. И мы не можем вызвать конструктор явно, он вызывается автоматически при создании объекта.

Чтобы создать экземпляр класса, мы используем ключевое слово new, и в этот момент вызывается конструктор. В PHP родительский конструктор вызывается явно, если определен конструктор производного класса. Если требуется конструктор суперкласса, в производном классе нужен вызов parent::__construct() . Конструктор суперкласса может наследоваться, если производный класс не определяет конструктор сам. Наследуется конструктор так же, как и любой другой метод класса, если в суперклассе он не был объявлен как privat .

В PHP4 и ниже при определении конструктора использовался метод с таким же именем, что и класс ( как в C++ и Java ). PHP5 ООП для определения конструктора любого класса содержит специальную функцию __construct() . Конструктор может содержать аргументы в соответствии с конкретными требованиями. Все объекты могут иметь встроенную функцию-конструктор, которая инициализирует при создании объекта его свойства. PHP позволяет создать только один конструктор для каждого класса, и мы не можем перегрузить конструктор.

Читайте также:  Main cpp code blocks

Если существует несколько объявленных конструкторов, PHP будет вызывать первый и игнорировать остальные. Конструктор должен быть объявлен как public и может использоваться вне класса. Если конструктор объявлен как private , он может быть использован только с классом, в котором он определен. В случае если необходимо объявить его как private , нам нужно будет использовать вызов статической функции.

Так как конструктор является магическим методом, он будет иметь отличительную метку магических методов — два подчеркивания в начале. Для определения конструктора мы используем ключевое слово construct :

__construct(); // Конструктор без аргументов.

Источник

Конструктор класса в PHP и его перегрузка

В версии PHP 5 мы получили возможность использовать конструктор класса, специальную функцию, объявляемую в классе, которая служит для инициализации экземпляра объекта. К сожалению, конструкторы, как и остальные методы класса в PHP, не могут быть «перегружены». Как это обойти, далее в статье.

Конструктор класса в PHP.

Конструктор объявляется как метод класса с именем __construct(). Он может содержать произвольное число параметров, и предназначен, прежде всего, для инициализации свойств создаваемого экземпляра объекта.

Иногда классу требуется объявить несколько разных конструкторов. Здесь можно применять разные подходы, весь перечень их ограничен лишь вашей фантазией. Я покажу вам несколько вариантов.

Перегрузка конструктора класса в PHP.

В таких языках как Си, перегрузка возможна за счет типизации входных параметров. Компилятор может отличить несколько функции с разными множествами вх. параметров (по количеству и по типу). В PHP мы объявляем только имя переменной, с которой функции может быть передано что угодно. Да и число параметров при вызове функции может быть иным, так устроен PHP.

Но мы можем анализировать актуальное число параметров, их тип, и запускать нужные ветки инициализации. Так мы получим нужный конструктор класса.

Смотрим соответствующие примеры.

Разное число параметров.

Если конструкторы должны отличаться только числом параметров, то это может выглядеть вот так:

Источник

Оцените статью