@Ganzal где ? Хочешь сказать что я где о ошибся выше ? --- Добавлено --- Хочешь сказать это не верно ?
@Ganzal в нём всё сказано если ты считаешь, что классы и их свойства с методами работают по другому, то иди воюй с маном, а не тролль меня.
@askanim это опять не ответ на мой вопрос. Увы. Ладно, давай с другой стороны зайдем. Какой у меня был вопрос?
и скажи мне разве я не ответил как себя поведёт протектед ? Я даже не поленился и проверил, я всё верно сказал. на лови ошибку Код (Text): Fatal error: Uncaught Error: Cannot access protected property B::$test in /var/www/gabriel.com/index.php:34 Stack trace: #0 {main} thrown in /var/www/gabriel.com/index.php on line 34
Ну не так это. Нет доступа из методов наследника, и не наследуется - не одно и тоже. Не надо глупости такие писать PHP: class A { private $a = 12; function b() { echo $this->a; } } class B extends A {} $obj = new B; $obj->b(); Данный код выведет 12, а не ошибку, что нет переменной A. Поскольку в методе, который унаследован из класса A можно обращаться к полю $a, следовательно у экземпляров класса B оно тоже есть, метод не отвалился. Но из метода, объявленного в классе b я не могу его поменять иначе, чем через вызов метода родителя.
@askanim нет, ты не понял вопроса. Зачем отвечать, если не понял собеседника? Мы с тобой уже обсуждали твою привычку пиздеть не подумав. Ты даже на две недели был остужен баном. Но ты завёл себе пинокио, вместо того чтоб отсидеть это наказание и поработать над собой.
Чё ? Ты сказал тоже что и я ты не понимаешь? Если у тебя PHP: Class book { private function boolka() { echo 'я привейт и я доступе только на тот класс в котором нахожусь, я функция и по наследованию не иду, также меня нельзя вызвать напрямую.' } public function whooooo () { $this->boolka(); } } $mr = new book; $mr->boolka(); // будет ошибка! $mr->whooooo \();// верный вызов! На проверь. И скажи что не прав, я тебе видео запишу где это работает. Не поленюсь. (Только завтра ща спать!) --- Добавлено --- @Ganzal что не понятного чем первый пример отличается от второго. --- Добавлено --- вижу только один код автора, другово не вижу, и я не бомблю, а отстаиваю точку зрения, что я правильно написал. Мне что теперь отставивать своё мнение нельзя, если оно верное, по факту могу с мануала привести примеры, прямо вырезая, и будет всё так же как я и сказал. Не вижу второго так называемого примера ткни и скажу чем отличается.
PHP: Class book { private function boolka () { echo __METHOD__, PHP_EOL; } public function whooooo () { $this->boolka(); } } $mr = new book; $mr->whooooo(); class AskanimProstoTupojMudak extends book { } $ms = new AskanimProstoTupojMudak; $ms->whooooo(); Код (Text): book::boolka book::boolka Как видишь, тут ты своим наездом опять обосрался. Можешь записать мне видео, где у тебя работает иначе. ЖДУ. И ЖДУ ОТВЕТ НА СВОЙ ВОПРОС.
@Ganzal У меня такой код был? Ты другой скинул, ты срываешься сейчас сам как истеричка. Я считаю что я ответил на твой вопрос если считаешь, что нет то можешь подкорректировать конкретней с примерами, а именно один пример и второй и по факту спросить чем отличается.
не совсем так. Я потребовал у тебя объяснить в чем разница между первым примером и вторым. Если бы ты не был безмозглым мудаком и прочитал бы тему - ты понял бы что в данной тебе на тот момент считалось первым примером а что вторым. Но тебе нужно было как обычно пропердеться а в голову ты только жрёшь. Это бессмысленная беседа. --- Добавлено --- следи за темой сообщения. Я твой код модифицировал под тематику темы. Если ты хочешь блеснуть знаниями то для начала научись читать. Вот это вообще охуеть каким знанием блеснешь. Пока ты им не блещешь.
@Ganzal ох как всё сложно не вижу второго примера, я прочитал беседу, кинь код, там и ссылки и другие коды. --- Добавлено --- @Ganzal Вахах, на вставь проверь PHP: Class book { private function boolka () { echo 'Привет @Ganzal'; } public function whooooo () { $this->boolka(); } } $mr = new book; $mr->whooooo(); class AskanimProstoTupojMudak extends book { } $ms = new AskanimProstoTupojMudak; $ms->whooooo(); --- Добавлено --- Всё чётко вывело. Аж два раза ибо два раза вызвал.
@askanim то есть ты признаешь что читать и думать не умеешь? --- Добавлено --- Код (Text): Привет @GanzalПривет @Ganzal ты что этим хотел сказать-то? Работает как и должно.
@Ganzal да работает, а я что написал, что работать не будет? И мой код будет работать, и этот будет, потому что это правильный вызов private функций! Напрямую их вызвать нельзя, я везде всё правильно написал мой любимый стандарт psr-4 и круглыми сутками кодю на ооп, да я не юзаю магические методы, потому что считаю мне пока рано к ним, но тут и не про это спор, а про базис. --- Добавлено --- @Ganzal так ладно у меня 12 ночи, увидел, но меня гложат сомнения по поводу этого кода во первых селф это зарезервированное слово, а во вторых статику юзать в простых методах просто нельзя. PHP: class CategoryModel { private $id, $categoryText; public function createWithParams($id, $categoryText) { // =_= >>> ???? $instance = new self(); // ???? $instance->id = $id; // ???? $instance->categoryText = array(); if ($categoryText != null) $this->categoryText[] = $categoryText; return $instance; } } я не понимаю что там в $cstegoryText передаётся. --- Добавлено --- @Ganzal так ладно у меня 12 ночи, увидел, но меня гложат сомнения по поводу этого кода PHP: class CategoryModel { //private $id, $categoryText ????? =_=; private $id; private $categoryText = []; public function createWithParams($id, $categoryText) { $instance = new self(); // ????? $instance->id = $id; //// ???? $instance->categoryText = array(); // ??? // WTF? // if ($categoryText != null) // ???? $this->categoryText[] ??? ???? ? = $categoryText; // и конструкцию выше я бы заменил на вот это if(!empty($categoryText))$this->categoryText[] = $categoryText; return $instance; } } И я херово читаю по английски я могу сделать так что мы вернём потом весь объект инстанс, и всё. И вообще не понимаю, в мане написано как надо делать, чтобы всё работало. Молчу про js там я даун. Но в php уже базу хорошо закрепил. Единственное что в php осталось это сокеты постигнуть и волшебные методы... Ну конеш там до талого ещё всяких библиотек от zend по работе со всем и вся, но потихоньку постепенно всё узнаем. $this->categoryText[] конечно тут ошибка будет не определённое значение ни где не указано что данное свойство класса является массивом. @Ganzal Хочешь ответ? Один пример отличается от другово: бредом сумашедшего.
@mkramer не наследуется я имел введу! Доступ напрямую нету у привейта вообще не откуда, только косвенно, протектед только по наследованию доступ прямого при вызове нет только косвенно ! Мы с тобой говорим об одном и том же только разными словами!
@askanim, ну так говори по-русски. Не наследуется - это если бы вообще пропадали в наследниках эти поля. А они есть, но не доступны. То есть наследуются Вот знаешь, я вырос в Узбекистане, но так по-русски даже узбеки не пишут....
напрямую, что не понятно? У тебя, что? Ограниченный словарный запас? Не можешь смысл предложения уловить? Анхк лайкнул похоже он тоже Узбек. Напрямую и косвенно, что можно не понять в этих двух словах? --- Добавлено --- @mkramer а я в конце слова Доступ букву не дописал, опечатался, и ты решил стебануться. --- Добавлено --- @mkramer то что ты не уловил суть предложения и не смог сопоставить одну с другим, говорит о том, что не русский тут ты, а не я. --- Добавлено --- я тебе, даже пример кода к своим словам привёл, чтобы до тебя свою мысль донести.
@askanim, ты опять истеришь. Будь проще. Это сообщество, весьма дружное. То, что попадаются мудаки (кстати, к которым @mkramer я бы не отнёс) - это не значит, что надо становится таким же. Или если ты пытаешься подражать Ганзалу, то у тебя не получается. В любом случае, не надо устраивать здесь (я минуты три сидел думал, какое слово тут вставить. в общем, извините) такой хуйни. Оскорбления в сообществе совершенно не приветствуются. Да и к тебе у участников положительного отношения не прибавляется. Попытайся понять разницу между словами "тематичный срач" и "полный капец".
@mr.akv согласен.... да он не похож был на оного, пока мне не написал вот так. @mkramer как бы метода private нету в наследуемом классе он не доступен. Его там нету, ну мне так казалось, что это так должно быть, ты вызываешь существующий в этом классе метод, который вызывает привейт свойство существуещего только в классе А. По логике вещей, оно не должно наследоваться... Если доступа нет, то и наследования быть не должно... https://php.ru/forum/threads/oop-nasledovanie-private-svojstv.51487/ надо туда перебраться.
но в теории вызвать то его нельзя, так что по сути его как бы там и нет, но он как бы и есть... В общем проще сказать его там нет.
@mkramer нам от его наследования не горячо не холодно больше похоже на баг. А по логике вещей ты вызываешь метод и он воспроизводит переменные в своей области видимости. Или возвращает что-то, так что то что ты написал не доказательство наследования. Вот если бы ты вызвал этот привейт в другом классе который наследуется, и он бы там прошёл без ошибки... Тогда был бы другой разговор. А как по мне так он и не наследуется и доступа нет, так что, как то так. И то это надо ещё проверить. А вот @runcore в другой теме дал интересный пример и наглядно показал существование наследования. --- Добавлено ---