it-source

PHP에 대한 "고급" 지식을 더 늘리는 방법(빠른 시간)

criticalcode 2022. 10. 31. 23:59
반응형

PHP에 대한 "고급" 지식을 더 늘리는 방법(빠른 시간)

저는 수년간 PHP와 함께 일하면서 언어를 잘 이해했고, 잘 작동하지 않는 진보된 시스템과 그렇지 않은 시스템을 많이 만들었습니다.

내가 마주치는 문제는 내가 이전에 배우지 못한 것에 대한 필요성을 찾을 때만 배운다는 것이다.이것에 의해, 문제에 대처하는 솔루션이나 그 외의 코드를 검색할 수 있기 때문에, 지금까지 본 적이 없는 새로운 기능이나 구조에 대해 학습합니다.이렇게 해서 저는 더 나은 기술(아마존, 구글, 또는 다른 대기업의 수업 등)을 많이 배웠습니다.

이것의 가장 큰 문제는 존재하는지 모르면 배울 수 없다는 개념이다.예를 들어, 나는 몇 달 동안 프로그래밍을 하면서 그 일에 대해 배웠다.empty()이 기능을 사용하면 문자열 길이를 확인할 수 있습니다.strlen()빈 값을 확인합니다.

저는 이제 점점 더 큰 시스템을 구축하기 시작했고, highscalability.com과 같은 블로그를 읽고 확장을 위한 MySQL 복제 및 서버 데이터에 대해 연구하기 시작했습니다.완전한 시스템을 작동시키기 위해서는 코드 구조가 매우 중요하다는 것을 알고 있습니다.

레딧의 구조에 대한 최근 블로그를 읽고 나서, 나는 레딧이 표준 또는 "인정된 시스템"이 있는지 의문을 갖게 되었다.

프레임워크(Kohana를 사용한 것은 유감스럽지만, PHP 프레임워크는 나에게 맞지 않는다고 판단)를 조사해 본 결과, 프레임워크가 있는 것보다 자신의 함수 라이브러리를 선호하고 있습니다.

현재 나의 구조는 워드프레스, 코하나, 그리고 나 자신의 지식을 혼합한 것이다.

잠재적으로 도움이 될 수 있는 방법은 다음과 같습니다.

  • 블로그 읽기
  • 튜토리얼을 읽다
  • 다른 사람과 함께 작업하다
  • 책을 읽다

매우 우수한 시스템 개발자가 되기 위한 "다음 레벨로 가는" 가장 좋은 방법은 무엇입니까?

PHP 프로그래머가 되고 싶은 모든 사람들은 항상 첫 번째 단어만 듣고 두 번째 단어는 완전히 무시한다.

"프로그래밍"이 "PHP"보다 더 중요하지만, PHP 프로페셔널이 되려면 우선 프로그래머여야 합니다.

그래서 저는 마지막 '책읽기'에 투표하겠습니다.PHP가 아니라 일반적인 프로그래밍에 있습니다.그래디 부치, 마틴 파울러, 심지어 도널드 크누스의 것까지요
Java나 Python과 같은 다른 언어들도 살펴보는 것이 좋을 것입니다.그들에게로 바꾸기 위해서가 아니라 그들에게서 배우기 위해서입니다.

프레임워크가 있는 것보다 나만의 기능 라이브러리를 선호합니다.

당신은 '기능 라이브러리'와 'a' 프레임워크를 별개의 개념(좋다!)으로 언급하고 있습니다.따라서 조금 더 앞부분을 올려서 기능 라이브러리를 프레임워크로 바꾸는 것은 어떨까요?이것은 훌륭한 학습 방법이지만, 시장성이 있는 스킬을 갖추는 최선의 방법은 아닙니다.

그것은 또한 잘못된 것을 배우는 좋은 방법이기 때문에 시작하기 전에 몇 가지 조사를 해야 합니다.

"필수' 기능

거의 모든 프레임워크에 특정 기능이 있으며 여기에는 이유가 있습니다.그 이유를 조사하고, 그 차이점을 파악해, 프레임워크에 포함할 실장을 선택합니다.

  • 오브젝트 지향(이것이 기능 라이브러리를 사용하는 것이 아니라 프레임워크를 작성하는 이유)
  • 패턴의 사용(Front Controller가 아닌 Application Controller를 사용하는 프레임워크가 많은 이유를 확인하고 자문해 보십시오.페이지 컨트롤러를 사용하는 플랫폼이 있습니까?
  • 기본 MVC 구조
  • 클린 URL

이해하고 에뮬레이트하는 비 PHP 플랫폼의 기능

  • Ruby를 좋아한다면 수업에서 모듈을 사용하는 방법을 원하십니까?
  • ASP를 좋아한다면.NET은 PHP 환경에서 서버 컨트롤을 만들어 보는 것이 좋을지도 모릅니다.
  • HTML의 기본값이 용서인 것에 화가 났습니까? 출력 서버 측의 유효성을 확인하는 것은 어떨까요?

당신이 무엇에 관심이 있는지 모르겠으니 여기까지 하겠습니다.

공개!

네이쓴의 말이 맞기 때문에 이 부분은 중요합니다.당신의 작품은 다른 사람이 보고, 이의를 제기하고, 비판하고, 수정해야 합니다.램프를 부셸 아래에 두지 마세요.보여질 필요가 있습니다.구글 코드나 소스 포지와 같은 것에 붙여, 사람들이 그것을 진지하게 보고 있는 경우는, 진지하게 받아들일 필요가 있습니다.유닛 테스트나 회귀 테스트를 유지할 필요가 있습니다.버전 관리를 사용할 필요가 있습니다.큰 코멘트를 할 필요가 있습니다./* header comment */각 파일의 맨 위에 표시되며 각 클래스 및 그 구성원에 대한 유용한 문서 생성 코멘트를 제공합니다.

요약

이 모든 것을 실시하면, 다른 플랫폼에 대해서(개략적으로) 학습할 수 있습니다.PHP 개발자라면 당연히 "ding 40"이 가능합니다.단위 검정과 회귀 검사에 대해 배울 수 있습니다.문서화에 대해 효과적으로 배울 수 있습니다.

틀이 "특이하고 아마 형편없을 것"이라고 보증하지만, 그것을 쓰는 것으로 많은 것을 배울 수 있다.프레임워크는 제품이 아니라 여정입니다.일종의.

  1. PHP PHP의 미리 정의된 인터페이스숨겨진 기능을 살펴봅니다.
  2. 다양한 언어를 배우다.PHP보다 학습 곡선이 가파른 언어를 학습합니다.PHP에 비해 다른 언어의 장점을 지적할 때마다 PHP 때리기라는 비난을 받습니다.대부분은 확실히 다른 고급 언어를 숙달하지 않은 사람들입니다.하지만 난 위험을 감수할 거야Ruby, Python, Pearl, haXe(엄밀하게 타이핑된 상대)를 추천합니다.이 작업을 완료했으면 새로운 지식을 PHP에 적용해 보십시오.아니면 PHP에서 멀리 떨어져 있는 것만으로 돌아갈 수 있습니다(그것은 일어날 가능성이 없다고 생각합니다).
  3. 위기상황에 대처하는 법을 배워라.네이쓴의 게시물에 대한 당신의 반응은 당신이 아직 그것을 처리할 수 없다는 것을 분명히 보여주었다.그가 전적으로 옳다.
    • 제 첫 번째 PHP 프레임워크를 보면, 꽤 형편없었습니다.그 당시에는 훌륭하다고 생각했습니다(또, 지금까지 도입하고 있던 많은 실가동 코드보다 여전히 우수합니다).그래도 결점은 많았어요.당신이 완전한 천재가 아닌 이상, 당신의 첫 번째 프레임워크는 몇 년 후에 되돌아보면 끔찍하게 보일 것이다(진화하는 것으로 가정).
    • 실제로, 시간이 지날수록(진화를 멈추지 않는다고 가정할 때) 작성하는 프레임워크는 더 나빠집니다.이러한 이유로 이용 가능한 프레임워크를 사용하여 애플리케이션 개발에 더욱 집중할 수 있습니다.사용하는 프레임워크에 제한이 있는 경우 다른 PHP 프레임워크를 작성하는 것보다 기여하는 것을 고려하십시오.
    • 독자적인 프레임워크 작성(재미/학습뿐만 아니라 실제 가동 환경에서의 도입)을 선택하는 시점에서는, 다른 프레임워크가 제공하는 것을 웃도는 요구 사항을 선택할 수 있습니다.또한 프레임워크로 작업하는 것이 마음에 들지 않는 경우가 아닙니다.그건 흔한 실수야, 내가 직접 저질렀지.하지만 이제 나는 그것으로부터 배웠다고 말할 수 있다.하지만 조언을 구하면(그때는 아쉽게도 하지 않았다) 다음과 같은 답변을 얻을 수 있습니다.
    • 직접 작성하지 않은 코드를 사용하여 많은 것을 배울 수 있습니다.다른 사람이 많이 생각하는 프레임워크에 의해 촉진되는 개념을 습득할 뿐만 아니라 생산적이고 유연하며 팀워크를 할 수 있고 (합리적으로 좋은 결과를 얻으면서) 일을 완수할 수 있게 됩니다.
    • PHP 오픈 소스 프로젝트의 모든 팀보다 자신이 더 낫다고는 생각하지 못할 것입니다.그렇지 않으면 질문할 것입니다.젊은 개발자가 가지고 있는 바퀴를 다시 만들고 싶은 고집스러운 본능적 욕구를 극복하고 성장하여 아직 아무도 다루지 않은 문제에 대처하십시오.
  4. 컴포넌트 라이브러리와 프레임워크의 차이점을 학습합니다.프레임워크를 "자신의 기능 라이브러리"로 대체할 수 있다고 생각하기 때문에 프레임워크의 목적이 무엇인지 이해하지 못했을 것입니다.종속성 반전, 제어 반전종속성 주입에 대해 살펴봅니다.
  5. 소프트웨어 설계에 대해 알아봅니다.SOLID와 TRAPH와 같은 OO의 원리를 살펴보세요.
  6. 다른 패러다임을 시험해 보세요.AOP, 기능 프로그래밍Ruby, Objective-C 또는 Smalltalk와 같이 객체 지향성이 강한 언어를 사용하여 OOO 기술을 향상시키십시오.
  7. Flow3, Symfony, PHP 점화기, CakePHP 등의 PHP 프레임워크를 살펴보세요.당신이 그렇게 해야 한다고 생각하는 이유는 이미 지적했어요.
  8. 또 다른 코멘트에서 지적했듯이 RDBM 이외의 스토리지도 고려해야 합니다.SQL과 OOP는 정말 잘 어울리지 않습니다.OODBMS, 다양한 데이터베이스 추상화 계층, 키 값 저장소, CouchDB 및 MongoDB와 같은 문서 저장소, 캐싱 서버를 memcache로 배포하는 등의 내용을 살펴보십시오.

여기 몇 가지 생각이 있습니다.

  • 여러 가지를 시도해 보세요.새로운 언어를 배우다.어떤 때는 다른 언어를 배우는 과정에서 둘 다 더 잘하게 됩니다.

  • 오픈 소스 프로젝트에 기여합니다.

  • 높은 확장성과 PHP/MySQL은 친구가 아닙니다.오늘날에는 이를 위해 만들어진 기술이 있습니다.node.js와 Redis를 예로 들 수 있습니다.

  • SO로 질문에 답합니다.다른 사람의 문제는 당신을 틀에서 벗어나 생각하게 하고, 당신은 도우려는 과정을 개선시킬 수 있으며, 당신은 누군가에게 좋은 일을 할 수도 있다.

  • [커피를 마시고 일어난 지 얼마 안 된 일이 생각나면 여기에 추가해 보겠습니다]

이미 알고 있는 것을 하는 법을 배우세요.다른 방법으로.예:

  • 다른 언어로
  • 다른 플랫폼에서
  • 병렬/분산하여
  • 틀을 통해 (네, '당신을 위한 것이 아닙니다'라고 판단했습니다.다른 틀을 시험해 보세요.때로는 서로 매우 다를 수 있습니다.)

프레임워크에 대해 다시 한 번 알아보는 것이 좋을 것 같습니다.Zend Framework는 컴포넌트의 라이브러리와 비슷하며 (다른 프레임워크와 마찬가지로) 엄밀한 구조를 강요하지 않습니다.단, (매우 정상적인) 프로젝트 레이아웃을 제안하고 있습니다.깊은 곳에서 살아남는 것이 좋은 출발점이 될 것이다.

아직 언급하지 않은 것, 특히 대규모 프로젝트에서는 도움이 될 수 있는 것:

심플: 실행.니즈가 당신을 배웁니다.상용 프로젝트든 오픈 소스 프로젝트든 점점 더 고급화되는 프로젝트에 참여할 수 있는 방법을 찾아보십시오.네가 정말로 무언가를 배울 수 있는 다른 방법은 없어.

나는 토론 게시판에 들어가 다른 사람들의 문제를 해결하려고 노력할 것이다.때때로 여러분이 연구를 하도록 강요하는 꽤 어려운 질문들이 있습니다.대답할 수 없다면, 할 수 있는 사람을 기다렸다가 배울 수 있다.

프레임워크에 대해서는 그것들로부터 배워라.대부분의 프레임워크는 다소 느릴 수 있기 때문에, 저도 제 자신의 것을 전개하고 있습니다.대부분의 웹사이트에서 충분히 빠르긴 하지만요.

Facebook의 PHP 라이브러리를 보는 것도 추천합니다.거기서 재미있는 일을 해요.

당신이 할 수 있는 최선의 방법은 효율적인 알고리즘에 관한 책을 사는 것이다.모든 컴퓨터 공학과 학생의 삶에는 이러한 것들을 공부해야 할 때가 온다.거기서 논의/해결되는 문제들은 여러분이 직면할 수 있는 거의 모든 현실 세계의 문제에 대한 추상화입니다.

다른 사람이 어떻게 했는지 블로그를 읽으면 효율적인 알고리즘의 원리를 실제로 사용하는 방법(또는 구현 방법까지)을 이해하는 데 도움이 되기 때문에 문제 없습니다.

안부 전해요.

다른 개발자와 협력하는 것에 대해서는 충분히 말할 수 없습니다.저는 특히 매일 같이 일하는 개발자 3명을 알고 있는데, 2명은 그들의 지식에 놀라움을 금치 못하고 있습니다.나는 내가 하는 모든 일에 대해 의견을 묻는다. 내 생각을 다시 추측해서가 아니라, 특히 내가 개발자로서 존경하는 사람들로부터 다른 아이디어를 듣고 싶다.나는 다른 어떤 수단보다 이 사람들에게서 더 많이 배운다.다른 상급 개발자와 접촉할 수 없다면 SO나 다른 개발 포럼에 글을 올려 의견을 물어보고 특정 프로젝트/문제에 어떻게 접근할 것인지 물어보세요.새로운 기술/방법/기능은 일반적으로 사용되는 것을 보지 않는 한 배울 수 없습니다(존재하는지 모를 경우 무엇을 찾아야 하는지 어떻게 알 수 있습니까?).

또한 이미 언급한 바와 같이 OS 앱에 참여하십시오.소스 포지에 접속하여 개발자가 필요한 프로젝트를 찾습니다.또는 앱을 다운로드하여 플러그인을 작성하려고 합니다(Invision 3.0 atm용 플러그인을 작성 중이고, 몇 가지를 배우고 있습니다).

도움이 됐으면 좋겠다.

다른 사람의 코드를 읽습니다.지금은 자신의 라이브러리를 가지고 있지만, 다른 애플리케이션의 출처를 읽으면 어느 정도 깨달음을 얻을 수 있을 것입니다.그럼 스스로에게 '왜'를 물어보세요.독자가 아닌 블로그 작가가 되어라.또한 언어보다 프로그래머를 더 강조하세요.오히려 이미 문제를 해결한 솔루션을 살펴보고 자신의 지식으로 재현해 보십시오.행운을 빌고 즐거운 시간 보내세요!

다른 프로그래머 코드를 조사하는 접근방식은 '좋은' 또는 '나쁜' 방식을 학습하는 좋은 방법입니다.다른 코드를 읽으면 좋은 코드에 대한 "느낌"이 생깁니다.

I definitely recommend Frameworks like Zend Framework, symfony, CakePHP or Agavi because a lot of contributors look at that code and develop them constantly towards the "ideal" solution (which of course will never be reached...) ;) You still can make the decision developing your own classes instead the ones the framework offers...

With such a long PHP background you could consider contributing to an open source framework. Discussions with other developers bring you forward in a faster way.

Showing your code to others and ask for constructive feedback has the same effect. You never know how good you are until you benchmark your skills with others. Always in a constructive manner. This would be a natural process when contributing to an open source framework. ;)

You should work with examples, work with them when you expand them so you will learn how to expand examples by making them more functional and give out more features.

Although, it is good to create something that you've learned so far in PHP. To practise more, you should create something like, a booking system, etc. Sooner or later you will be able to expand more by learning more when you study more in PHP which will lead your development to be much more better.

You could ask your company if they could pay you a Zend PHP certification exam. Studying for this exam would oblige you to know PHP well and to train by reading a lot of the documentation, the Zend study guide, and also by training with mock exams. It's a very efficient way of improving, and it looks quite good on a résumé.

"my own library of functions" == "a [idiosyncratic and probably sucky] framework".

I recommend learning Symfony because the developers seem to consistently strive to do everything according to "best" practices ... but you could probably learn a lot from any of the popular frameworks.

Don't write your own framework. Please.

ReferenceURL : https://stackoverflow.com/questions/2948323/how-to-increase-my-advanced-knowledge-of-php-further-quickly

반응형