В процедурном php вроде все логично, но опп, имхо муть несуразная, создается объект типа присвоением новая функция в который попадает переменная из класса которую обрабатывает функция из метода В питоне немного что смотрел списки вместо массивов может быть удобнее.
Да простенький пример описал своими словами PHP: <?php class first { public $str = 'some text'; // определение метода function getstr() { echo $this->str; } } $obj = new first(); // вызов метода объекта $obj->getstr(); ?>
Да да да. Уже проходили. PHP либо мертв, либо умирает. И никому не нужен. Все признаки на лицо. --- Добавлено --- А вот график катастрофического падения доли PHP за прошедший год: --- Добавлено --- А вот наглядное отображение процесса умирания PHP и взлета Python в веб-деве за последние 7 лет.
зачем ограничивать себя и сидеть на одном стеке? тренд меняется постоянно. и если клиент увлечен, и хочет проект на Го или Ноде, и готов за это платить больше, почему бы не сделать ему приятно, попутно подняв свой скилл? старайся постоянно развиваться и изучать новое. и станет уже неважно на чем писать. новое будешь осваивать за неделю, ибо там много похожих вещей.
Эммм, скажем PHP я использую уже 16 лет, да карл! 16 грёбаных лет. Правда для коммерческой разработки около 7 лет. К PHP у меня нет претензий. Попутно изучал также разные ЯП и немного стэк технологий которые с ним связанны а именно: Perl, VB, ActionScript3, MQL, JavaScript, Java, C, C++. Ну а толку? Все равно в коммерческой разработки проекты у меня только на PHP. Да и не перейдешь сразу на другой стэк технологий так как чтобы качественно что-то делать вместо того чтобы сидеть в документации по фреймворкам или справочнику по языку должно быть потрачено определенное время и за частую нужен скорее результат. Последний проект который я продолжаю делать на Symfony3 - перед началом проекта была возможность выбрать другой стэк, скажем я присматривался к Java Spring, но после непродолжительного времени выбор откатился на Symfony - так как я этот фреймворк знаю достаточно хорошо, а для других фреймворков пришлось бы тратить кучу времени на разборки с компонентами такими как Hibernate и тому подобное. Ну и как бы фраза "есть клиент который хочет на Го и Ноде" - как то настораживает, возможно мы говорим про разные лиги? Бизнесу зачастую все равно на чем делать им нужен и важен результат, а какой ты там стэк технологий используешь это бизнесу должно быть все равно, им нужно лишь увеличение добавочной стоимости или расширение рынка за счет внедрения IT. Я вообще не понимаю от куда идет это самое "хочет на конкретной технологии", получается клиенты настолько гурманы в технологиях и знают все нюансы почему нужен им именно Го или Нода а не скажем Python, Ruby или PHP? Другой вопрос если мы говорим о найме на работу но в таком случае это не клиент а начальник и там должна быть сформированная команда в которой хотя бы пару разработчиков действительно знают тот стэк технологий который используют. --- Добавлено --- Ну конечно ты не понимаешь не из-за того что ООП в PHP плохо реализовано, а скорее из за того что нужно больше опыта! Вот список ошибок: 1) Название класса с маленькой буквы; 2) Открытый член-переменная(свойство) класса $str а нужно сокрытие данных по принципу наименьших привилегий; 3) Не указан модификатор доступа к методу getstr() - понятно что он по умолчанию public но лучше указывать; 4) CamelCase нотация нужен в именовании getStr(); 5) getstr - является getter'ом и должен делать return $this->str а у тебя он направляет строку в поток вывода; Без обид, но если бы ты был у меня в команде при код ревью я написал бы тебе такие замечания. И да, по поводу $obj = new first(); - все логично донельзя, если бы new не было бы то интерпретатор не смог бы определить что ты хочешь создать объект и получить на него указатель, а не вызвать функцию first() и получить из неё результат в obj!
Вот не интуитивно: Код (Text): #include <stdio.h> #include <stdlib.h> struct first { char *str = "some string"; }; void getstr(struct first *o) { printf("%s", o->str); } int main() { struct first *obj = (struct first *)malloc(sizeof(struct frist)); getstr(obj); return 0; }
Видимо, у нас разные клиенты. Мои клиенты, зачастую компания или стартап, команда. Они ищут кандидата на вакансию или проект уже с полным пониманием того на чем это должно работать, а в большинстве случаев, проект уже почти написан или даже в продакшне. Стек технологий определен плюс/минус(для этого нанимаются консультанты, и производится анализ рынка и самого проекта, на основании чего выбирается стек). На мнение/умения первого попавшегося фрилансера никто не полагается, а делается серьезный и обоснованный выбор. Если твоим клиентам все равно, на чем будет написано то за что они платят деньги - нууу... это их проблемы, о которых они пока не подозревают. набьют шишек, поумнеют.
Вот как раз на NodeJS и на Go шишек набьют, если уж что-то серьезное делать то на Java EE все остальное просто нервно курит в сторонке... --- Добавлено --- Нууу, батенька это не клиенты а работодатели, а ты просто работник у которого требуют... Не надо путать клиентов и работодателей... --- Добавлено --- ты серьезно? Расскажи какие там у Вас супер пупер консультанты по стэкам технологий нанимаются? --- Добавлено --- Расскажи тогда пожалуйста пруфы, ну скажем у меня сейчас стэк такой PHP 7 + Symfony3. Чем его можно заменить на NodeJS + ??? И какие будут от этого преимущества? Только без "загугли", я это и так могу сделать, но все таки хочется услышать мнение эксперта по NodeJS.
ну делай, кто тебе мешает, кроме самого себя? Клиент платит за работу, он и есть работодатель. И неважно, я работаю на него в офисе, или временно, на его проекте, работая из другой страны. Клиент хочет, я делаю, клиент платит. Что именно вызывает у тебя разрыв шаблона? Консультантом может быть любой специалист в данной области. Клиент должен доверять его мнению. Поэтому, если таковых нет под боком, заказывают сторонних. На моей памяти, например было так.... изначально стек определял Тимлид, который участвовал в предыдущем, успешном проекте этого клиента. Потом наняли нас, мы при необходимости, дополняли его. Но в любом случае, никто не спрашивал нас, на чем мы умеем лучше, или хотим. Есть требование, на чем НАДО, и мы уже подстраивались, изучая параллельно всё, что еще незнаем. Нормальный рабочий процесс. я нигде не называл себя экспертом по Ноде или Го. Хотя и имею некоторый опыт реальной разработки. Та же нода, имеет свои плюсы и минусы. из плюсов огромное кол-во качественных библиотек. нет необходимости в большом фреймворке. npm в помощь. можно подключать только те что нужны. Она сама себе вебсервер, асинхронный и очень шустрый. идеология разработки несколько отличается, ибо четко прослеживается разделение френтенд(нода) и бекенд(ангулар, реакт...) При желании, можно превратить свой сайт в десктоп приложение очень просто (Electron, NwJs). писать легко и приятно. тем более что JS и на клиенте и на сервере, хоть и с отличиями. нехочу с тобой холиварить. и чтото доказывать. ты зачем создал тему? услышать другое мнение? ты его услышал. --- Добавлено --- плохая у тебя чуйка
Ну ты крутой... --- Добавлено --- Ну разрыв шаблонов у меня возникает вот какой: Ко мне обращается человек у которого есть деньги и хочет сделать свой стартап, скажем есть у него идея, но он не разбирается в технологиях, я набираю команду и делаю этот проект, по моим рекомендациям выбирается стэк технологий для проекта. - Это и есть заказчик, то есть я не нанимаюсь на работу а оказываю услуги по разработки ПО, у нас разные компании, у меня ИП у клиента ООО или тоже ИП, юридически мы это оформляем как услуги по разработки ПО. Расчетные счета разные, распределение средств разное, требования к написанию кода диктую я. А вот у тебя, ты просто боевая единица которая закроет вопрос с несколькими задачами которые на тебя поставит тимлид или менеджер проекта, и стэк технологий диктуют тебе. - Вот в чем разница. --- Добавлено --- Как будет следующий проект возможно и возьму Java EE или Spring.
не всегда. когда проект для меня заканчивается. я ищу новый на фриланс бирже или среди предложений от предыдущих клиентов. и тут я могу выбирать, каким будет мой следующий проект. на стеке который я знаю отлично, на стеке который мне придется местами изучать или полностью новом для меня стеке. такой выбор бывает не всегда, но все же бывает. и далее, если иду в незнакомый стек - начинается самое интересное но и самое трудное. скоростное его изучение. и работа над проектом. и да. я сразу так тебе и написал, что у нас видимо разные клиенты. мои стараются контроллировать даже стек разработки. твои - доверяют это тебе. разный подход, с разными рисками и платой за них. --- Добавлено --- В данный момент, ява в вебе нужна в достаточно узкой нише крупных проектов и сетевых игр. в подавляющем большинстве мелких и средних проектов, проще и дешевле обойтись без нее.
Но ведь это же создается указатель а не объект, зачем там знак переменной и чем могут отличаться $obj1->,$obj2->,$obj3-> и их соответствующие указания $obj1 = new first(); $obj2 = new first(); $obj3 = new first(); ?
Как будет следующий проект возможно и возьму Java Вот когда я откажусь от своей идеи фикс делать прототипы на Python и медленные части переписывать на C, C++ или Java, тогда скорее всего займусь NodeJS. Он то не плохой на самом деле... Года 3 назад смотрел на ExpressJS для NodeJS вроде удобно было, как сейчас правда ничего вразумительного сказать не могу --- Добавлено --- Эмммм, в памяти создаётся объект и возвращается на него указатель который ложится в $obj1, указатель не может указывать на несуществующий объект в PHP, он либо есть либо его нет: PHP: $obj = 1; # В переменной $obj храниться само значение типа integer. $obj = 1.0; # В переменной $obj храниться само значение типа float. $obj = "test string" # В переменной $obj храниться само значение типа string. $obj = new first(); # В переменной $obj храниться указатель на объект типа first. --- Добавлено --- Все просто, эти переменные указывают на разные экземпляры одного и того же типа(класса). Тип один и тот же, а данные разные. --- Добавлено --- @keren если интересует как это происходит ещё глубже могу и это рассказать
@Sail очень на то похоже, по крайней мере если не капать. В принципе ты можешь дать ссылку на строку кода в github где именно описан код реализующий операцию new в PHP.
Сейчас времени нет, в субботу напишу как это в самом интерпретаторе работает... Чтобы без слово-блудства было .