ООП для начинающих PHP. Наследование. Конструкторы в наследовании. Свойство protected.

preview_player
Показать описание
Продолжаем изучение ООП в php и в этом уроке мы рассмотрим Наследование в php. Наследование в PHP реализовано с помощью ключевого слова extends.

========================================================
И не пропускай новые видео!!!
========================================================
ПЛЕЙ-ЛИСТЫ МОЕГО КАНАЛА:
========================================================

Рекомендации по теме
Комментарии
Автор

спасибо за урок! изучаю php по книге, многие темы по ООП вызывают вопросы, обращаюсь к вашим видео - сразу становится всё понятно

Yuong
Автор

Спасибо )) прямо вот на это м уроке пришло хоть какое то начальное понимание что такое ооп))) это круто!

hoh.invest
Автор

Очередное спасибо за доступное в понимании изложение. Уложилось :)

qgfwrbc
Автор

нормал! С меня лайк как обещал, отключенный эдблок + клики по рекламе )))
ну и как всегда я уже все скачал )))

Хотел сказать чтобы ты примеры кода выкладывал, хотя лучше не стоит, все же правильнее, если ты хочешь чему то научиться, то нужно просто самому ручками вводить код на своей клаве смотря твое видео, а если просто копировать то так ничего и не поймешь )))

 Лучше только не магазин пилить, так как магазинов уже куча всяких разных.
Давай лучше городской сайт запили с каталогами, с чатом с использованием ajax запросов, ну либо можно соц сеть запилить!
Объясняешь нормально, только не делай ошибки как другие, могу дать дельных советов пачку )))
Начинай все с самого начала от установки редактора (рекомендую использовать нотпад++) так как в нем новичкам легче разобраться.
Дальше покажи как установить и настроить опенсервер!
Ну и когда будешь пилить не ставь на паузу при поиске ошибок, это хорошо когда автор парится и допускает ошибки, плохо то, что он ставит на паузу и после исправления продолжает, а зрители так и не поняли потом где была ошибка, как он ее исправил, как нашел! Ведь это самое главное увидить как он находит и исправляет ошибки, это тоже важная часть! Ну и сайт на выходе должен получится просто зачетный, как будто ты его на заказ делал, с дизайном и наполнен материалами и картинками, а не так как некоторые делают видосы, тяп ляп, поверхностно показал, и со словами: "и так пойдет, я вам принцип показал, ну в общем вы меня поняли" решил что это верно!

onemasterlomaster
Автор

Хорош уроки. если что-то не ясно - гуглите, читайте комменты, начинайте урок сначала пока не отработаете до идеала. Главное практика) Лукас

rgisbjx
Автор

2:48 - у тебя просто варнинги (т.к. для moder, клас которого наследует user нет аргументов), у меня же fatal error и мой метод $moder->hello() уже не отрабатывает. Это из-за версии пхп? У меня 7.1

User-cvhuidghjv
Автор

слово "например" было бы очень кстати.
например: "используйте модификатор final когда он необходим, например ...")
спасибо за уроки!

lvivduncan
Автор

Спасибо автору за уроки. Пересматриваю наверно 4ый раз уже и не могу понять как в вордпрессе использовать ихние классы ))) Так по урокам всё понимаю... Не могу понять как добавить атрибуты товара. WC_Product_Simple Object (
[object_type:protected] => product
[post_type:protected] => product
[cache_group:protected] => products
[data:protected] => Array
(
[name] => Test Product
[slug] => test-product
[attributes] => Array
(
[pa_razmer] => WC_Product_Attribute Object
(
[data:protected] => Array
(
[id] => 3
[name] => pa_razmer
[options] => Array
(
[0] => 57
)

[position] => 0
[visible] => 1
[variation] =>
)

)


)
);
Мой код:
global $Product;
$Product = new WC_Product();

$Product = wc_get_product( '673' );
$Product->set_attributes( array('pa_razmer'=> array('name' => 'pa_razmer', 'options' => array(57, 58), 'position' => 0)

) );
$Product->save();
Но в ключ attributes ничего не пишет. Может кто в курсе что не так...? :)

mishafomin
Автор

Спасибо за урок. Возникло два вопроса:
1) В видео была фраза, что каждый дочерний класс вызывает конструктор своего родительского класса прежде, чем определить собственные свойства. Правильно я понял, что это происходит только в том случае, если у дочернего класса не определен собственный конструктор (иначе зачем создавать свой конструктор, если всё равно вызовется конструктор родителя)?
2) Protected свойства и методы можно применять только в дочернем классе? А если, например, у дочернего класса, есть свой дочерний класс, то для него этот функционал уже не будет доступен? Тогда какую область видимости задать, чтобы свойства/методы класса были доступны внутри класса и всем своим потомкам (не только дочерним)? Только public и тогда будут видны отовсюду, или всё же можно как-то ограничить только для потомков?

StePpyX
Автор

Единственное видео в ютубе с 1 371 просмотров и с 0 дизлайков))) Я рад

spebwfq
Автор

Как обратится к статической переменной из класса наследника?

Odessa-ua
Автор

Подскажите почему у меня ошибки не отображаются? Всегда когда ошибка получаю ошибку 500 и белая страница.

ostinfree
Автор

я в общем так понял... правда не без помощи поисковика...
public - доступ ко всем методам и свойствам, можно изменять свойства после создания класса...
protected - доступ и изменение внутри своего и дочернего класса
private - доступ и изменение только внутри своего класса

mcxzmcc
Автор

Подскажите пожалуйста такой вопрос... ситуация: есть два класса БОЛЬШИХ для админки и для самого сайта, и да в админском классе есть функции которыми можно было воспользоваться в классе для сайта для уменьшения количества кода, НО! стоит ли для сайта подключать админский класс БОЛЬШОЙ, что бы унаследовать от туда 5-6 функций. Может проще для ресурсов и быстродействия сервера продублировать эти 5-6 функций в классе для сайта ????

php_boy
Автор

Please note that in php 7 it should be like this -> function __construct($name = null, $password = null, $email = null, $city = null) otherwise you will face fatal error: Uncaught ArgumentCountError: Too few arguments

Argishti
Автор

Единственны один человек может объяснить эти уроки аккуратно и с умом! это Евгений Попов! Тут вроде он хочет объяснить но не полностью.... мол типа так типа как то .. нету примеров практике !!! когда и для чего применять, только в один момент он объяснил "когда речь шел про корзину товаров" а остальное все фигня... вроде программирование я понимаю, но как он объясняет все запутано! даже три раза подряд прослушал, повторял за ним.... все равно фигня! для тех кто хоть чуть-чуть ООП понимает им нормально .... я новичок просто запутается! Просто хоть название поменяй... или просмотри старые уроки Попова... Как говориться учись у него как ввести уроки, тут ничего стремного!!! мы же учимся у тебя нам не стремно! Для знаний нет место стремности! Короче пять за старание а двойка за введение! Если будут другие уроки посмотрю! просто жаль времени который я убил да и мусор просто в голове набил! Всем удачной учебы и успеха! Автору тоже!!!

-.-.-._.-.-._.-.-.-hfjfj
Автор

Добрый день, я во время просмотра уроков повторяю все за вами... вот в данном уроке столкнулся с проблемой... у меня с прошлых уроков в User остался конструктор...function __construct.


и при команде $moder=new Moderator();


вылетает ошибка Fatal error: Uncaught ArgumentCountError: Too few arguments to function User::__construct(), 0 passed


До тех пор пока не закоментирую конструктор.


class User
{
public $v1 = "v1";
public $v2 = "v2";
public $v3 = "v3";
public $v4 = "v4";

public $vv1 = "vv1";
public $vv2 = "vv2";
public $vv3 = "vv3";
public $vv4 = "vv4";

function __construct($vv1, $vv2, $vv3, $vv4)
{
$this->vv1 = $vv1;
$this->vv2 = $vv2;
$this->vv3 = $vv3;
$this->vv4 = $vv4;
}
function returnconstr()
{
return "{$this->vv1}" . "{$this->vv2}" . "{$this->vv3}" . "{$this->vv4}";
}

}


class Moderator extends User {
public $info;
public $rights;
function hello()
{


}
}

echo
$moder=new Moderator();
echo $moder->hello();
echo


$constr=new User("test1", "test2", "test3", "test4");

echo $constr->returnconstr();

?>

psihmel
Автор

Web developer Blog а сколько ты уже работаешь в WEB ???Мне очень интересно !!!! *)

vladshcherbachenia
Автор

вопрос по php:

как сделать переадресацию на другую тсраницу с помощью header(), если наприер неудачное соединение с бд произошло? ведь header должен быть выше всего кода, и он не узнает когда что происходит и не выполнит определенные действия... подскажите кто шарит пож)

Ooshka
Автор

Если ООП для того что бы не дублировать код, я не пойму почему в дочернем лассе нужно опять писать точно такой же конструктор, какой в родительском?

masterng