Как еще расширить свои «продвинутые» знания PHP?(быстро) [закрыто]

StackOverflow https://stackoverflow.com/questions/2948323

  •  05-10-2019
  •  | 
  •  

Вопрос

Я работаю с PHP уже много лет и очень хорошо разбираюсь в этом языке, создал множество продвинутых и не очень продвинутых систем, которые работают очень хорошо.

Проблема, с которой я сталкиваюсь, заключается в том, что я учусь только тогда, когда нахожу необходимость в чем-то, чему я раньше не учился.Это заставляет меня искать решения и другой код, который решает проблему, и таким образом я узнаю о новой функции или структуре, которых я раньше не видел.Именно таким образом я освоил многие из своих лучших техник (например, изучая курсы Amazon, Google или других крупных компаний).

Основная проблема заключается в том, что невозможно чему-то научиться, если вы не знаете, что это существует.Например, мне потребовалось несколько месяцев программирования, чтобы изучить empty() функцию, и я бы просто проверил длину строки, используя strlen() для проверки пустых значений.

Сейчас я занимаюсь созданием все более и более крупных систем, начал читать блоги, такие как highscalability.com, и исследовать репликацию MySQL и данные сервера для масштабирования.Я знаю, что структура вашего кода очень важна для работы всей системы.

Прочитав недавний блог о структуре Reddit, я задался вопросом, существуют ли какие-то стандартные или «принятые системы».

Я изучил фреймворки (я использовал Kohana, о чем пожалел, но решил, что фреймворки PHP не для меня) и предпочитаю свою собственную библиотеку функций, а не фреймворк.

Моя нынешняя структура представляет собой смесь WordPress, Kohana и моих собственных знаний.

Способы, которые я считаю потенциально полезными:

  • Читать блоги
  • Читать руководства
  • Работайте с кем-то другим
  • Читать книгу

Каков был бы лучший способ «перейти на следующий уровень» — уровень очень хорошего системного разработчика?

Это было полезно?

Решение

Все, кто хочет быть программистом PHP, всегда принимает только первое слово и полностью игнорирует второе.

Хотя «программирование» - это намного важнее, чем «PHP», чтобы быть профессионалом PHP, на первое место должен быть программистом.

Итак, я голосую за последний - чтение книг. Не на PHP, но на программировании в целом. Грейди Боох, Мартин Фаулени даже старый Дональд Кнут.
Было также приятно взглянуть на некоторые другие языки, такие как Java или Python. Не переходить на них, а учиться у них.

Другие советы

Я предпочитаю свою собственную библиотеку функций, а не иметь рамки

Вы называете «библиотеку функций» и «фреймворк» разными понятиями (хорошо!), так почему бы не попробовать немного поднять ставку и превратить эту библиотеку функций в фреймворк?Имейте в виду, это отличный способ учиться, но не лучший способ приобрести рыночные навыки;)

Это также отличный способ научиться неправильный поэтому, прежде чем начать, вам нужно провести небольшое исследование.

«Необходимые» функции

Есть определенные функции, которые есть почти у всех фреймворков, и на это есть причина.Исследуйте их;выяснить почему они присутствуют и каковы их вариации;выберите, какие реализации вы предпочитаете включить в свою структуру.

  • Объектно-ориентированный (это ключ к тому, почему вы должны писать фреймворк, а не просто использовать свою библиотеку функций)
  • Использование шаблонов (посмотрите и задайте себе вопрос, почему так много фреймворков используют Контроллер приложений в отличие от Передний контроллер...и есть ли платформы, которые используют Контроллеры страниц?
  • Базовый MVC-структура
  • Чистые URL-адреса

Особенности платформ, отличных от PHP, которые вы хотите понять и подражать

Я понятия не имею, что вас интересует, поэтому остановлюсь на этом.

Опубликуйте это!

Эта часть важна, потому что Нэйтан прав:вашу работу должны видеть, оспаривать, критиковать и исправлять другие люди.Не оставляйте эту лампу под спудом — ее нужно видеть;поместите это в код Google, SourceForge или что-то в этом роде, и если люди собираются серьезно к этому относиться, вам нужно отнестись к этому серьезно;вам необходимо поддерживать юнит-тесты и регрессионные тесты;вам необходимо использовать контроль версий;вам нужно это хорошо прокомментировать, с большим /* header comment */ вверху каждого файла и полезные комментарии для создания документов для каждого класса и его члена.

Краткое содержание

Если вы сделаете все это, вы сможете узнать (на высоком уровне) о других платформах.Вы определенно можете достичь 40-летнего возраста как PHP-разработчик.Вы можете узнать о модульном тестировании;о регрессионном тестировании.Вы можете научиться эффективному документированию.

Гарантированно, ваш фреймворк получится «своеобразным и, возможно, отстойным», но вы можете многому научиться, написав его.Просто имейте в виду, что фреймворк — это не продукт;это путешествие...своего рода.

  1. Заглянуть Скрытые особенности PHP а также Предопределенные интерфейсы PHP
  2. Узнайте разные языки. Узнайте языки, которые имеют более крутое кривую обучения, чем PHP. В любое время я указываю на преимущества других языков на PHP, я обвиняется в PHP Bashing, в основном быть людьми, которые совсем явно никогда не освоили другого языка высокого уровня. Но я возьму риск. Я предлагаю Ruby, Python, Pearl и хэкс (как строго напечатанный аналог). Как только вы сделали это, попробуйте применить свои новые знания на PHP. Или просто отойти от PHP, если вы не хотите вернуться (что, я думаю, вряд ли не произойдет).
  3. Научитесь иметь дело с критикой. Ваша реакция на пост Натана вполне ясно показал, что вы не можете справиться с этим. Он абсолютно прав.
    • Глядя на мою первую PHP Framework сейчас, я должен сказать, что это довольно дерьмо. В то время я думал, что это было здорово (и все равно лучше, чем много производственного кода, который я уже видел развернутым). Тем не менее, у него было много недостатков. Если вы не общий гений, ваши первые рамки просто будут выглядеть ужасно, если вы оглядываетесь на них через несколько лет спустя (предполагая, что вы развиваетесь).
    • На самом деле, любые рамки, которые вы создадите, будут выглядеть хуже по мере прогресса (при условии, что вы не прекращаете развиваться). По этой причине вы можете просто использовать доступные рамки и сосредоточиться на разработке приложений. Если рамочная структура имеет ограничения, рассмотрите возможность вносить вклад, а не написать еще одну структуру PHP.
    • Точка вовремя, чтобы выбрать писать свои собственные рамки (не только для развлечения / обучения, но для развертывания производства) заключается в том, когда ваши требования превышают, какие другие рамки оттуда предлагают, а не когда вам просто не нравится идея работать с одним. Это распространенная ошибка, которую я сделал сам. Но теперь я могу сказать, я узнал от этого. Но если вы попросите совету (который я к сожалению не делал в то время), вы получите такие ответы.
    • Вы многому научитесь работать с кодом, который вы не написали. Вы не только подбираете концепции, продвигаемые рамочными рамками, которые другие уложили много мысли, но вы также научитесь быть продуктивными, гибкими, способными работать в команде и получить работу (при этом достаточно хорошие результаты).
    • Я полагаю, что вы не можете думать, что вы лучше, чем каждая команда проекта PHP с открытым исходным кодом, в противном случае вы спросите. Преодолейте упрямый инстинктивный надо изобретать колесо любого молодого разработчика и вырастет к решению проблем, никто еще не решен.
  4. Учитесь, какова разница между компонентной библиотекой и рамками. Поскольку вы думаете, что вы можете заменить структуру с «вашей собственной библиотекой функций», вы, вероятно, не поняли, какова точка рамок. Посмотри на Зависимость инверсии, инверсия контроля а также внедрение зависимости.
  5. Узнайте о проекте программного обеспечения. Посмотрите на принципы OO, как ТВЕРДЫЙ а также ПОНЯТЬ.
  6. Попробуйте разные парадигмы. AOP, функциональное программирование. Усиливайте свои навыки OO, используя языки с более сильной ориентацией объекта, такими как Ruby, Objective-C или SmallTalk.
  7. Посмотрите на PHP Frameworks, такие как Flow3, Symfony, PHP Ogniter и CakePhp. Я уже указал, почему я думаю, что вы должны сделать это.
  8. Как указано в очередной комментарии моего комментария, вы должны учитывать другие хранилища, чем RDBMS. SQL и OOP действительно не идут вместе. Посмотрите на OODBMS, разные слои абстракции базы данных, клавишные магазины, магазины документов, такие как CouchDB и MongoDB, распределяют серверы кэширования в качестве мемкцирования и т. Д.

Вот несколько мыслей:

  • Попробуйте разные вещи. Узнайте новый язык. Некоторые времена в процессе обучения, что другой язык, на самом деле делает вас лучше на обоих.

  • Внести свой вклад в проект с открытым исходным кодом.

  • Высокая масштабируемость и PHP / MySQL не являются друзьями. Сегодня есть технологии, которые строятся только для этого. node.js и redis, чтобы назвать пару.

  • Ответьте на вопросы в этом. Проблемы других людей могут заставить вы думать за пределами коробки, и вы улучшаете процесс попытки помочь, а вы также делаете что-то хорошее для кого-то.

  • Постарается добавить здесь, если я думаю о чем-то еще, я просто проснулся пить кофе: D

Учитесь делать то, что вы уже знаете ... по-другому. Примеры:

  • на другом языке
  • На другой платформе
  • Параллельно / распределен
  • Через каркас (да, вы решили, что они «не для вас» - возможно, попробуйте другой, они иногда очень отличаются друг от друга)

Может быть, вы снова должны посмотреть в рамки, я бы предложил взглянуть на Zend Framework, потому что это больше похоже на библиотеку компонентов, которые вы можете использовать, как вы видите, и на самом деле не налагает жесткую структуру, которую вы должны следовать (например, Некоторые другие рамки делают), хотя он предлагает (довольно Sane IMHO) проекта. Хорошая отправная точка будет Выжить глубокий конец.

Вещи, которые вы еще не упомянули, и это может оказаться полезным знать (особенно в более крупных проектах):

Простой: сделай это. Отказ Потребности заставит вас учиться. Найдите способ принять участие в более широко развитых проектах, будь то коммерческий или открытый источник. Нет другого способа, вы действительно можете что-то узнать.

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

Что касается рамки, учись у них. Я тоже катаюсь, так как большая часть каркасов может быть довольно медленной. Хотя достаточно быстро для большинства сайтов там.

Я бы также рекомендовал смотреть в библиотеку PHP Facebook. Они делают некоторые интересные вещи там.

Лучшее, что вы можете сделать, это купить книгу на Эффективные алгоритмы. Отказ В каждой компьютерной научном студенте жизни наступает время, когда он / она должен учиться тем. Проблемы, которые обсуждаются / решают, есть абстракции практически любых реальных мировых проблем, которые вы когда-либо сталкиваетесь.

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

С уважением.

Недостаточно можно сказать о работе с другими разработчиками. Я знаю, что 3 разработчика особенно, 2, с которыми я работаю на дневной основе, который взорвет меня со своими знаниями. Я прошу их мнения на все, что я делаю, а не потому, что я вторую угадаю свои собственные идеи, но более того, что я хочу услышать другие идеи, особенно от людей, которые я уважаю как разработчики. Я узнаю больше от этих людей, чем любые другие средства. Если у вас нет доступа к другим высокопоставленным разработчикам, то определенно разместите на форумах так или на других форумах DEV и попросите мнения людей, спросите людей, как они подходят к определенному проекту / вопросу. Вы не узнаете новые методы / методы / функции, как правило, если вы не видите их использование (откуда вы знаете, что искать, если вы не знаете, это существует?)

Также, как уже говорилось, примите участие в приложении ОС. Перейдите к SourceForge и найдите проект, нуждающийся в разработчике. Или загрузите приложение и попробуйте написать для него плагин (я пишу плагин для прививки 3.0 атм и изучения нескольких вещей.)

Надеюсь, это поможет.

Прочитайте код других людей. У вас сейчас есть собственная библиотека, но вы можете получить какое-то просвещение при чтении источника других приложений. Затем спросите себя «Почему. Будьте в блоге писателя вместо читателя. Кроме того, подчеркивайте больше на программист, чем на язык. Скорее посмотрите на решения, которые уже решают проблему и пытаются реплицировать их своими собственными знаниями. Удачи и очень весело!

Подход к взгляду на другие программисты, определенно хорошим способом изучения «хороших» или «плохих» практик. Прочитав другой код, вы разрабатываете «чувство» для хорошего кода.

Я определенно рекомендую фреймворки, такие как Zend Framework, Symfony, CakePhp или Agavi, потому что многие вкладчики смотрят на этот код и постоянно развивают их к «идеальному» решению (который, конечно, никогда не будет достигнут ...);) Вы все еще можете сделать Решение, разработающее ваши собственные классы вместо тех, которые предлагают рамки ...

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

Показывая свой код другим и попросить конструктивную обратную связь имеет тот же эффект. Вы никогда не знаете, насколько вы хороши, пока вы не оцениваете свои навыки с другими. Всегда в конструктивной манере. Это будет естественный процесс при содействии структуре с открытым исходным кодом. ;)

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

Хотя, хорошо создавать то, что вы узнали до сих пор в PHP. Чтобы попрактиковаться больше, вы должны создать что-то вроде, система бронирования и т. Д. Рано или поздно вы сможете больше расширить, узнав больше при большем количестве учебы в PHP, что приведет к тому, что ваше развитие будет намного лучше.

Вы можете попросить вашу компанию, если бы они могли заплатить вам сертификат Zend PHP. Изучение этого экзамена, обязуется вам знать, что вы хорошо узнаете PHP и на тренировку, чтение многих документации, руководство по изучению Zend, а также обучением с помощью MOCK Exams. Это очень эффективный способ улучшения, и он выглядит неплохо на резюме.

«Моя собственная библиотека функций» == «Активное и, вероятно, вызывает структуру].

Я рекомендую узнать Симфония Поскольку разработчики, кажется, постоянно стремятся сделать все в соответствии с «лучшими» практиками ... но вы, вероятно, можете многое узнать из любой из популярных рамх.

Не пишите свои собственные рамки. Пожалуйста.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top