статичСскиС свойства класса php

БтатичСскиС свойства класса php

Π­Ρ‚Π° страница описываСт использованиС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова static для опрСдСлСния статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ свойств. static Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для опрСдСлСния статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ статичСского связывания. Для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова static ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ страницам.

ОбъявлСниС свойств ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса статичСскими позволяСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½ΠΈΠΌ Π±Π΅Π· создания экзСмпляра класса. К Π½ΠΈΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ статичСски Π² созданном экзСмплярС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса.

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Foo :: aStaticMethod ();
$classname = ‘Foo’ ;
$classname :: aStaticMethod ();
?>

БтатичСскиС свойства

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #2 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ статичСского свойства

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π² PHP 8 Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½:

User Contributed Notes 28 notes

Here statically accessed property prefer property of the class for which it is called. Where as self keyword enforces use of current class only. Refer the below example:

public function static_test ()<

This is also possible:

You misunderstand the meaning of inheritance : there is no duplication of members when you inherit from a base class. Members are shared through inheritance, and can be accessed by derived classes according to visibility (public, protected, private).

The difference between static and non static members is only that a non static member is tied to an instance of a class although a static member is tied to the class, and not to a particular instance.
That is, a static member is shared by all instances of a class although a non static member exists for each instance of class.

class Derived extends Base
<
public function __construct()
<
$this->a = 0;
parent::$b = 0;
>
public function f()
<
$this->a++;
parent::$b++;
>
>

$i1 = new Derived;
$i2 = new Derived;

To check if a method declared in a class is static or not, you can us following code. PHP5 has a Reflection Class, which is very helpful.

It is important to understand the behavior of static properties in the context of class inheritance:

— Static properties defined in both parent and child classes will hold DISTINCT values for each class. Proper use of self:: vs. static:: are crucial inside of child methods to reference the intended static property.

— Static properties defined ONLY in the parent class will share a COMMON value.

declare( strict_types = 1 );

$a = new staticparent ;
$a = new staticchild ;

It should be noted that in ‘Example #2’, you can also call a variably defined static method as follows:

Static variables are shared between sub classes

class Child1 extends MyParent <

class Child2 extends MyParent <

To check if a function was called statically or not, you’ll need to do:

(I’ll add this to the manual soon).

The static keyword can still be used (in a non-oop way) inside a function. So if you need a value stored with your class, but it is very function specific, you can use this:

echo aclass::b(); //24
echo aclass::b(); //36
echo aclass::b(); //48
echo aclass::$d; //fatal error

Starting with php 5.3 you can get use of new features of static keyword. Here’s an example of abstract singleton class:

abstract class Singleton <

/**
* Prevent direct object creation
*/
final private function __construct ()

/**
* Prevent object cloning
*/
final private function __clone ()

On PHP 5.2.x or previous you might run into problems initializing static variables in subclasses due to the lack of late static binding:

If the init() method looks the same for (almost) all subclasses there should be no need to implement init() in every subclass and by that producing redundant code.

Solution 1:
Turn everything into non-static. BUT: This would produce redundant data on every object of the class.

Short example on a DataRecord class without error checking:

Regarding the initialization of complex static variables in a class, you can emulate a static constructor by creating a static function named something like init() and calling it immediately after the class definition.

/*
this is the example to use new class with static method..
i hope it help
*/

It’s come to my attention that you cannot use a static member in an HEREDOC string. The following code

function __construct()
<
echo

Inheritance with the static elements is a nightmare in php. Consider the following code:

class DerivedClassOne extends BaseClass <
>

class DerivedClassTwo extends BaseClass <
>

At this point I think it is a big pity inheritance does not work in case of static variables/methods. Keep this in mind and save your time when debugging.

Hi, here’s my simple Singleton example, i think it can be useful for someone. You can use this pattern to connect to the database for example.

$objA = MySingleton :: getInstance (); // Object created!

$objB = MySingleton :: getInstance ();

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства Π² PHP

БСгодня ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ статичСских свойствах ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… Π² PHP. Если ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ – Ρ‚ΠΎ это свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ классу Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Π° Π½Π΅ созданным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ этого класса. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π±Π΅Π· создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Иногда ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ просто свойствами ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ класса. НС ΠΏΡƒΡ‚Π°ΠΉΡ‚Π΅ ΠΈΡ… со свойствами ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ Ρ€Π°Π½Π΅Π΅!

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ статичСскиС свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ свойства static.

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим самый простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Как ΠΌΡ‹ ΡƒΠΆΠ΅ сказали, статичСскиС свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ классу, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΡ‹ ΠΈΡ… ΠΌΠΎΠΆΠ΅ΠΌ Π±Π΅Π· создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ имя класса ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π‘Π°ΠΌΠΎ собой, становится понятно, Ρ‡Ρ‚ΠΎ статичСскиС свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½ΡƒΠΆΠ½Ρ‹, Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½Π΅ трСбуСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ, Π»ΠΈΠ±ΠΎ Π΅Π³ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅Ρ‚, Π½ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΊΠ°ΠΊΠΈΠΌΠΈ-Ρ‚ΠΎ значСниями ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π”Π°Π²Π°ΠΉΡ‚Π΅ сразу ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ класс User:

ΠœΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструктора ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ролями (ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€, администратор, простой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ) ΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ администратора, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ этого класса, с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. НапримСр, ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ администраторов, ΠΈ Π΅ΠΌΡƒ Π½Π° Π²Ρ…ΠΎΠ΄ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π’Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

Всё Ρƒ нас ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ сработало. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠ°Π»ΠΎ Ρ‡Π΅ΠΌ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ссли Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² конструкторС Π±ΡƒΠ΄Π΅Ρ‚ 5, ΠΈ ΠΈΠ· Π½ΠΈΡ… 4 ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ для ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Ρ€ΠΎΠ΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² всСгда ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, становится изящным способом ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄.

ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

БтатичСскиС свойства

А Ρ‡Ρ‚ΠΎ Π½Π° счёт статичСских свойств? Для Ρ‡Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…?
Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим класс со статичСским свойством:

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² это свойство, Π½Π΅ создавая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² этого класса:

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, эти ΠΆΠ΅ свойства Π±ΡƒΠ΄ΡƒΡ‚ доступны ΠΈ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² этого класса:

И Π΄Π°ΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ этих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΡ‹ смоТСм Π΄ΠΎΡΡ‚ΡƒΡ‡Π°Ρ‚ΡŒΡΡ Π΄ΠΎ этих свойств, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ слова self::

Ну ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ статичСскиС свойства ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ классу, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ….

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ статичСских свойств

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса Human, это число ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ? ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, просто ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² конструкторС – ΠΎΠ½ вСдь вызываСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠΌ Π²ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСскиС свойста ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ классов. Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΡ… использования, Π½ΠΎ ΠΎΠ± этом ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡƒΡ€ΠΎΠΊΠ°Ρ….

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Готовимся ΠΊ собСсСдованию ΠΏΠΎ PHP: ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«staticΒ»

НС сСкрСт, Ρ‡Ρ‚ΠΎ Π½Π° собСсСдованиях Π»ΡŽΠ±ΡΡ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°Π²Π΅Ρ€Π·Π½Ρ‹Π΅ вопросы. НС всСгда Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹Π΅, Π½Π΅ всСгда ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ Ρ„Π°ΠΊΡ‚ остаСтся Ρ„Π°ΠΊΡ‚ΠΎΠΌ β€” Π·Π°Π΄Π°ΡŽΡ‚. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, вопрос вопросу Ρ€ΠΎΠ·Π½ΡŒ, ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° вопрос, Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд каТущийся Π²Π°ΠΌ Π΄ΡƒΡ€Π°Ρ†ΠΊΠΈΠΌ, Π½Π° самом Π΄Π΅Π»Π΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΎΠ³ΠΎ, насколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ язык, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΈΡˆΠ΅Ρ‚Π΅.

статичСскиС свойства класса php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ статичСскиС свойства класса php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ статичСскиС свойства класса php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ статичСскиС свойства класса php. Π€ΠΎΡ‚ΠΎ статичСскиС свойства класса php

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Β«ΠΏΠΎ косточкам» ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… вопросов β€” Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ слово Β«staticΒ» Π² PHP ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΎ примСняСтся?

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static ΠΈΠΌΠ΅Π΅Ρ‚ Π² PHP Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… значСния. Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΈΡ… Π² хронологичСском порядкС, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ появлялись Π² языкС.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ β€” статичСская локальная пСрСмСнная

Однако всё мСняСтся, Ссли ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄ присваиваниСм поставим ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static:

ΠŸΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

РазумССтся, ΠΊΠ°ΠΊ всСгда Π² PHP, Π½Π΅ обходится Π±Π΅Π· Β«ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ°ΠΌΠ½Π΅ΠΉΒ».

КамСнь ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ β€” статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ константы ΠΈΠ»ΠΈ константныС выраТСния. Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

с Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС парсСра. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, начиная с вСрсии 5.6 стало допустимым присвоСниС Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ констант, Π½ΠΎ ΠΈ константных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” Β«1+2Β» ΠΈΠ»ΠΈ «[1, 2, 3]»), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ зависят ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вычислСны Π½Π° этапС компиляции

КамСнь Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² СдинствСнном экзСмплярС.
Π’ΡƒΡ‚ всё Ρ‡ΡƒΡ‚ΡŒ слоТнСС. Для понимания сути ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΊΠΎΠ΄:

Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ для Π½Π΅ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊ Π½Π΅ΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ источником ошибок. НуТно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ наслСдованиС класса (ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°) ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ всё-Ρ‚Π°ΠΊΠΈ создаСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄:

Π’Ρ‹Π²ΠΎΠ΄: динамичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² PHP ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² контСкстС классов, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ лишь Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅ происходит подстановка «$this = Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ_ΠΎΠ±ΡŠΠ΅ΠΊΡ‚»

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ β€” статичСскиС свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ классов

Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ PHP сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² β€” экзСмпляров класса, Π½ΠΎ ΠΈ для класса Π² Ρ†Π΅Π»ΠΎΠΌ. Для этого Ρ‚ΠΎΠΆΠ΅ слуТит ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static:

Для доступа ΠΊ Ρ‚Π°ΠΊΠΈΠΌ свойствам ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ конструкции с Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ΠΌ (Β«Paamayim NekudotayimΒ»), Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ИМЯ_ΠšΠ›ΠΠ‘Π‘Π::$ΠΈΠΌΡΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ИМЯ_ΠšΠ›ΠΠ‘Π‘Π:: ΠΈΠΌΡΠœΠ΅Ρ‚ΠΎΠ΄Π°().

Π‘Π°ΠΌΠΎ собой разумССтся, Ρ‡Ρ‚ΠΎ Ρƒ статичСских свойств ΠΈ статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π΅ΡΡ‚ΡŒ свои особСнности ΠΈ свои Β«ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ вторая β€” static Π½Π΅ аксиома!

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π½Π΅ совсСм Π²Π΅Ρ€Π½ΠΎ:

И кстати, всё написанноС Π²Ρ‹ΡˆΠ΅ относится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ. ИспользованиС статичСского свойства Ρ‡Π΅Ρ€Π΅Π· «->» Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ„Π°Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ошибкС.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅, каТущССся самым слоТным β€” ΠΏΠΎΠ·Π΄Π½Π΅Π΅ статичСскоС связываниС

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ языка PHP Π½Π΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ Π½Π° Π΄Π²ΡƒΡ… значСниях ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Β«staticΒ» ΠΈ Π² вСрсии 5.3 Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Β«Ρ„ΠΈΡ‡ΡƒΒ» языка, которая Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ‚Π΅ΠΌ ΠΆΠ΅ самым словом! Она называСтся Β«ΠΏΠΎΠ·Π΄Π½Π΅Π΅ статичСскоС связываниС» ΠΈΠ»ΠΈ LSB (Late Static Binding).

ΠŸΠΎΠ½ΡΡ‚ΡŒ ΡΡƒΡ‚ΡŒ LSB ΠΏΡ€ΠΎΡ‰Π΅ всСго Π½Π° нСслоТных ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…:

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово self Π² PHP всСгда Π·Π½Π°Ρ‡ΠΈΡ‚ «имя класса, Π³Π΄Π΅ это слово написано». Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС self замСняСтся Π½Π° класс Model, Π° self::$table β€” Π½Π° Model::$table.
Вакая языковая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ называСтся Β«Ρ€Π°Π½Π½ΠΈΠΌ статичСским связываниСм». ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π°Π½Π½ΠΈΠΌ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ связываниС self ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ класса происходит Π½Π΅ Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅, Π° Π½Π° Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… этапах β€” парсинга ΠΈ компиляции ΠΊΠΎΠ΄Π°. Ну Π° «статичСскоС» β€” ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ статичСских свойствах ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ….

НСмного измСним наш код:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ PHP Π²Π΅Π΄Ρ‘Ρ‚ сСбя Π² этой ситуации Π½Π΅ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ. self Π±Ρ‹Π» связан с классом Model Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎ классС User Π΅Ρ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ извСстно, поэтому ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Model.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π΄ΠΈΠ»Π΅ΠΌΠΌΡ‹ Π±Ρ‹Π» ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ связывания Β«ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎΒ», Π½Π° этапС Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ°. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ просто β€” достаточно вмСсто слова Β«selfΒ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Β«staticΒ» ΠΈ связь Π±ΡƒΠ΄Π΅Ρ‚ установлСна с Ρ‚Π΅ΠΌ классом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π° Π½Π΅ с Ρ‚Π΅ΠΌ, Π³Π΄Π΅ ΠΎΠ½ написан:

Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ Π·Π°Π³Π°Π΄ΠΎΡ‡Π½ΠΎΠ΅ Β«ΠΏΠΎΠ·Π΄Π½Π΅Π΅ статичСскоС связываниС».

НуТно ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для большСго удобства Π² PHP ΠΊΡ€ΠΎΠΌΠ΅ слова Β«staticΒ» Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ функция get_called_class(), которая сообщит Π²Π°ΠΌ β€” Π² контСкстС ΠΊΠ°ΠΊΠΎΠ³ΠΎ класса Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ваш ΠΊΠΎΠ΄.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово «static»

Π­Ρ‚Π° страница описываСт использованиС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова static для опрСдСлСния статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ свойств. static Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для опрСдСлСния статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ статичСского связывания. Для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова static ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ страницами.

ОбъявлСниС свойств ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса статичСскими позволяСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½ΠΈΠΌ Π±Π΅Π· создания экзСмпляра класса. Атрибут класса, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ статичСским, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ доступСн посрСдством экзСмпляра класса (Π½ΠΎ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½).

Π’ цСлях совмСстимости с PHP 4, сдСлано Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Ссли Π½Π΅ использовалось ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ области видимости, Ρ‚ΠΎ Ρ‡Π»Π΅Π½ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» объявлСн ΠΊΠ°ΠΊ public.

Как ΠΈ любая другая статичСская пСрСмСнная PHP, статичСскиС свойства ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π»ΠΈΡ‚Π΅Ρ€Π°Π» ΠΈΠ»ΠΈ константу, выраТСния ΠΆΠ΅ нСдопустимы. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ статичСскоС свойство Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ†Π΅Π»Ρ‹ΠΌ числом ΠΈΠ»ΠΈ массивом, Π½ΠΎ Π½Π΅ смоТСтС ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Начиная с вСрсии PHP 5.3.0 сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° класс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, self, parent ΠΈ static).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ статичСского свойства

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #2 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Foo :: aStaticMethod ();
$classname = ‘Foo’ ;
$classname :: aStaticMethod (); // Начиная с PHP 5.3.0
?>

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

БтатичСскиС свойства класса php

Reg.ru: Π΄ΠΎΠΌΠ΅Π½Ρ‹ ΠΈ хостинг

ΠšΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠΈΠΉ рСгистратор ΠΈ хостинг-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ Π² России.

Π‘ΠΎΠ»Π΅Π΅ 2 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ Π½Π° обслуТивании.

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡ‡Ρ‚Π° для Π΄ΠΎΠΌΠ΅Π½Π°, Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для бизнСса.

Π‘ΠΎΠ»Π΅Π΅ 700 тыс. ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ ΡƒΠΆΠ΅ сдСлали свой Π²Ρ‹Π±ΠΎΡ€.

БСсплатный ΠšΡƒΡ€Ρ «ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° HTML5 ΠΈ CSS3»

ΠžΡΠ²ΠΎΠΉΡ‚Π΅ бСсплатно ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ видСокурс

ΠΏΠΎ основам Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠΉ вСрстки

Π½Π° HTML5 ΠΈ CSS3 с ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ нуля.

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Bootstrap: быстрая адаптивная вёрстка

ΠŸΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ видСокурс ΠΏΠΎ основам Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠΉ вСрстки Π² Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ Bootstrap.

ΠΠ°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ Π²Π΅Ρ€ΡΡ‚Π°Ρ‚ΡŒ просто, быстро ΠΈ качСствСнно, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт.

ВСрстайтС Π½Π° Π·Π°ΠΊΠ°Π· ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΠΉΡ‚Π΅ дСньги.

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ для создания PHP-сайтов?

ΠžΡ‚Π²Π΅Ρ‚ здСсь. Волько самоС Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ качСствСнныС сайты Π½Π° PHP всСго Π·Π° 2 часа ΠΈ 27 ΠΌΠΈΠ½ΡƒΡ‚!

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ свой сайт Π·Π° 3 часа ΠΈ 30 ΠΌΠΈΠ½ΡƒΡ‚.

ПослС просмотра Π΄Π°Π½Π½ΠΎΠ³ΠΎ видСокурса Ρƒ Вас Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊ использованию сайт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π’Ρ‹ сдСлали сами.

Π’Π°ΠΌ останСтся лишь Π½Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½ (ΠΏΠΎ ТСланию).

Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ основы HTML ΠΈ CSS ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅ΠΌ Π·Π° 4 часа.

ПослС просмотра Π΄Π°Π½Π½ΠΎΠ³ΠΎ видСокурса Π’Ρ‹ пСрСстанСтС с уТасом ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° HTML-ΠΊΠΎΠ΄ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π’Ρ‹ смоТСтС ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свои ΠΏΠ΅Ρ€Π²Ρ‹Π΅ HTML-страницы ΠΈ ΠΏΡ€ΠΈΠ΄Π°Ρ‚ΡŒ ΠΈΠΌ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CSS.

БСсплатный курс «Π‘Π°ΠΉΡ‚ Π½Π° WordPress»

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ CMS WordPress?

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡƒΡ€ΠΎΠΊΠΈ ΠΏΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Ρƒ ΠΈ вСрсткС сайта Π½Π° WordPress.

ΠΠ°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚Π΅ΠΌΠ°ΠΌΠΈ ΠΈ Π½Π°Ρ€Π΅Π·Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚.

БСсплатный видСокурс ΠΏΠΎ Ρ€ΠΈΡΠΎΠ²Π°Π½ΠΈΡŽ Π΄ΠΈΠ·Π°ΠΉΠ½Π° сайта, Π΅Π³ΠΎ вСрсткС ΠΈ установкС Π½Π° CMS WordPress!

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ JavaScript, Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒΡΡ?

ПослС прохоТдСния видСокурса Π’Ρ‹ освоитС Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с JavaScript.

Π Π°Π·Π²Π΅ΡŽΡ‚ΡΡ ΠΌΠΈΡ„Ρ‹ ΠΎ слоТности Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этим языком, ΠΈ Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ JavaScript Π½Π° Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅.

*НавСдитС курсор ΠΌΡ‹ΡˆΠΈ для приостановки ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ.

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства Π² PHP

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°Ρ… ΠΌΡ‹ освоили основныС возмоТности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π² PHP ΠΈ сСйчас ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ Π±ΠΎΠ»Π΅Π΅ слоТных ΠΈ интСрСсных аспСктов.

Но Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ всС Ρ‚Π°ΠΊ просто. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΈ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, ΠΈ ΠΊ свойствам Π² контСкстС класса, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ «ΡΡ‚атичСскими» ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова static.

Однако ΠΈΠ· статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠΆΠ΅ Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅ догадались, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ статичСским свойствам. И Ссли Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ статичСскоС свойство, Ρ‚ΠΎ всС экзСмпляры этого класса смогут ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ доступ ΠΊ статичСскому элСмСнту осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· класс, Π° Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Π° пСрСмСнная, которая ссылаСтся Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ имя класса, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ указываСтся Π΄Π²Π° двоСточия «::».

Π‘ этим синтаксисом Π²Ρ‹ ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌΡ‹ ΠΏΠΎ основам ООП Π² PHP. ΠœΡ‹ использовали ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ «::» Π² сочСтании с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом parent для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.

БСйчас, ΠΊΠ°ΠΊ ΠΈ Ρ‚ΠΎΠ³Π΄Π°, ΠΌΡ‹ обращаСмся ΠΊ классу, Π° Π½Π΅ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, содСрТащимся Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅. Π’ ΠΊΠΎΠ΄Π΅ класса ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово parent для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ супСрклассу, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ имя класса.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ статичСскому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΈΠ»ΠΈ свойству ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ самого класса (Π° Π½Π΅ ΠΈΠ· Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса), ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово self.

А Π²Π½ΡƒΡ‚Ρ€ΠΈ класса StaticExample ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово self.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΊΡ€ΠΎΠΌΠ΅ случаСв обращСния ΠΊ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, конструкция «::» Π΄ΠΎΠ»ΠΆΠ½Π° всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для доступа ΠΊ статичСским ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈΠ»ΠΈ свойствам.

По ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² контСкстС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈ свойствами класса. Как слСдствиС, нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡΠ΅Π²Π΄ΠΎΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ $this Π²Π½ΡƒΡ‚Ρ€ΠΈ статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

А Π·Π°Ρ‡Π΅ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ свойство?

Π’ΠΎΡ‚ ΠΌΡ‹ ΠΈ дошли Π΄ΠΎ самого Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ вопроса. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ статичСских элСмСнтов Π΅ΡΡ‚ΡŒ ряд ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… характСристик.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ΠΈ доступны ΠΈΠ· любой Ρ‚ΠΎΡ‡ΠΊΠΈ сцСнария (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ доступ ΠΊ классу). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ функциям Π½Π΅ пСрСдавая экзСмпляр класса ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅, сохраняя экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, статичСскоС свойство доступно ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ экзСмпляру ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° этого класса. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны всСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π²-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, сам Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ экзСмпляр класса для доступа ΠΊ Π΅Π³ΠΎ статичСскому свойству ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ создания экзСмпляров ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π΄ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° простой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это, Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ для класса ShopProduct, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ShopProduct. C ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SQLite ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ products ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим ΠΌΠ΅Ρ‚ΠΎΠ΄ getInstance(), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ пСрСдаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ строки ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° PDO. Они Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для извлСчСния строки ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π° основании ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°Ρ‚Π΅ΠΌ формируСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° ShopProduct, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Π² Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊ классу ShopProduct, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» создан Π½Π°ΠΌ Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°Ρ…. Как Π²Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π·Π½Π°Π΅Ρ‚Π΅, PDO Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ PHP Data Object (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… PHP). Класс PDO обСспСчиваСт ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ….

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΌΠ΅Ρ‚ΠΎΠ΄ getInstance() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° ShopProduct, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΎΠ½ достаточно «ΡƒΠΌΠ΅Π½» для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° основании значСния поля type ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ характСристиками.

Π― ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опустил ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±Ρ‹Π» ΠΏΠΎ возмоТности Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ. НапримСр, Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ вСрсии этого ΠΊΠΎΠ΄Π° Π½Π°ΠΌ нСльзя Π±Ρ‹Ρ‚ΡŒ слишком Π΄ΠΎΠ²Π΅Ρ€Ρ‡ΠΈΠ²Ρ‹ΠΌΠΈ ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ PDO-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±Ρ‹Π» ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

На самом Π΄Π΅Π»Π΅ Π½Π°ΠΌ, вСроятно, слСдуСт Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ PDO-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. К этому вопросу ΠΌΡ‹ Π΅Ρ‰Π΅ вСрнСмся Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ².

ΠœΠ΅Ρ‚ΠΎΠ΄ getInstance() Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² контСкстС класса, Ρ‡Π΅ΠΌ Π² контСкстС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Он позволяСт Π»Π΅Π³ΠΊΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, находящиСся Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ для этого Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° ShopProduct.

Π’ этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ свойства, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, поэтому Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ статичСским. Π’ΠΎΠ³Π΄Π°, имСя ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ PDO-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· любого мСста прилоТСния.

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠ°ΠΊ «Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π±Π΅Ρ€ΡƒΡ‚ «ΡΡ‹Ρ€Ρ‹Π΅» ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· строки Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΡ… для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π’Π΅Ρ€ΠΌΠΈΠ½ «Ρ„Π°Π±Ρ€ΠΈΠΊΠ°» относится ΠΊ ΠΊΠΎΠ΄Ρƒ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΌΡƒ для создания экзСмпляров ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π‘ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… «Ρ„Π°Π±Ρ€ΠΈΠΊ» ΠΌΡ‹ Π΅Ρ‰Π΅ встрСтимся с Π²Π°ΠΌΠΈ дальшС.

НСкоторыС свойства Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. НапримСр, Ρ‚Π°ΠΊΠΈΠ΅ элСмСнты, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄Ρ‹ ошибок ΠΈΠ»ΠΈ ΠΊΠΎΠ΄Ρ‹ состояния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π² классах. Π₯отя ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ общСдоступными ΠΈ статичСскими, клиСнтский ΠΊΠΎΠ΄ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ….

Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ постоянныС свойства Π²Π½ΡƒΡ‚Ρ€ΠΈ класса. Как ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ константы, константы класса нСльзя ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹. ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎΠ΅ свойство ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова const.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… свойств, ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ постоянного свойства Π½Π΅ ставится Π·Π½Π°ΠΊ Π΄ΠΎΠ»Π»Π°Ρ€Π°. По принятому соглашСнию ΠΈΠΌ часто Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π°, состоящиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· прописных Π±ΡƒΠΊΠ², ΠΊΠ°ΠΊ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½Ρ‹Π΅ свойства ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния, относящиСся ΠΊ элСмСнтарному Ρ‚ΠΈΠΏΡƒ. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π΅ нСльзя ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Как ΠΈ ΠΊ статичСским свойствам, доступ ΠΊ постоянным свойствам осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· класс, Π° Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Подобно Ρ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ константа опрСдСляСтся Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π΄ΠΎΠ»Π»Π°Ρ€Π°, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ трСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ символ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ.

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ константС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π±Ρ‹Π»Π° объявлСна, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС Π½Π° этапС синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°..

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° свойство Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ доступным для всСх экзСмпляров класса ΠΈ ΠΊΠΎΠ³Π΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ фиксированным ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

На этом Π΄Π°Π½Π½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽ, Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎ абстрактныС классы ΠΈ интСрфСйсы Π² PHP.

ΠŸΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΡΡ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ?
ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ с Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ ΠΈ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *