저는 2012년부터 PHP를 접했고, 지금까지 2~3년 동안 수많은 우회로를 겪었고, 수없이 밤을 새며 다양한 PHP 책, 블로그 등을 읽었습니다. 요약, 그것은 지난 기간의 요약이어야합니다.
PHP는 약한 유형의 언어입니다. 소위 유형 구분이 없다는 의미는 아니지만, PHP 변수를 미리 정의할 필요가 없다는 뜻입니다. $a/$b/$c와 같이 $ 기호만 필요합니다. PHP 변수의 기본 구현은 C에서 Union을 사용하여 구현되지만 PHP 변수는 작업 중에 자동으로 유형 변환을 수행합니다. 둘째, PHP 변수는 "참조 복사" 및 "쓰기 시 복사" 메커니즘을 사용합니다.
PHP를 나중에 배우게 되면 어떻게 배워야 할지 모르겠다는 생각이 들게 되는데, 함수 구현이 가능하고 배울 것이 없다는 느낌이 드는 것이 사실입니다. PHP 자체는 나중 단계에서 배울 것이 없습니다. 이때 배워 보세요. 몇 가지 디자인 패턴을 살펴보고, 몇 가지 오픈 소스 코드를 살펴보고, MVC를 캡슐화해 보고, 원래 PHP 언어를 사용하여 캡슐화를 구현해 보세요. 일부 프레임워크. 이 글을 읽은 후에는 PHP의 소스 코드를 살펴보는 것이 좋습니다. 아마도 현재로서는 PHP의 소스 코드가 여전히 이해하기 어렵다는 것을 알게 될 것입니다. 처음에는 이렇습니다. C 언어와 C++를 다시 배울 수 있습니다. 이 시점에서 C에서 C++로 전환하는 것은 실제로 많은 수의 구조(구조체), 정의, 형식 정의 및 대규모 프로세스라는 것을 알 수 있습니다. PHP 소스 코드에는 1, 2, 3개의 포인터가 사용됩니다. PHP에 대해 배울 것이 없다는 것이 아니라 그 후에 더 깊이 파고들어야 할 것이 있다는 것을 알게 될 것입니다. 앞으로 며칠 내에 PHP 소스 코드를 살펴보고 PHP 확장 기능을 구현해 보고 이를 여러분의 환경에 적용해 보세요.
PHP 후반부에서 배울 것이 없는 것은 아니지만, 언어 자체는 상대적으로 단순해서 애플리케이션 수준에서만 배우면 실제로 배울 것이 없습니다. 자, 소스코드를 대략 읽어보면 php가 opcode로 파싱되어 실행되는 것을 보실 수 있을 것입니다. apc의 사용법과 memcache, radius의 개념을 알게 되실 것이고, php에 대한 더 깊은 이해를 가지실 것입니다. 최적화로 전환하세요.
PHP는 웹 개발 언어이므로 웹에서는 최적화를 어떻게 말하나요? 웹 사이트 병목 현상은 일반적으로 두 가지 위치에 존재합니다. 하나는 데이터베이스 병목 현상이고 다른 하나는 PHP 언어의 병목 현상입니다. 데이터베이스 측면: 테이블 구조 최적화, mysql 엔진 선택, 인덱스 추가, 수직 테이블 파티셔닝, 수평 테이블. 파티셔닝, 마스터-슬레이브 데이터베이스 읽기 및 쓰기 분류, 클러스터링. PHP의 경우 뷰 레이어에서 CSS 및 js 최적화부터 시작하여 CSS 및 js 압축 및 병합, 이미지 처리, 아이콘 병합 등을 수행할 수 있습니다. 컨트롤러 계층에서는 SQL 문을 최적화하여 관련 쿼리 및 하위 쿼리의 사용을 줄이고 SQL 문을 분할하여 실행한 후 데이터를 결합할 수 있습니다. 페이지 정적 처리를 사용하여 자주 변경되지 않는 일부 페이지를 처리하고, memcache/apc/radius를 데이터베이스 캐시로 사용하여 데이터베이스 부담을 완화하고, opcode 기능을 사용하여 PHP 구문 분석을 줄입니다(php5.5 이후에는 내장 opcode가 apc를 제거합니다). , apc 구현을 사용할 수도 있음), Apache 서비스 대신 더 빠른 nginx를 선택하고, 서버를 클러스터링하는 등의 작업을 수행할 수 있습니다. 물론 PHP 자체를 작성할 때 작은따옴표와 큰따옴표를 사용하는 등의 최적화 기술도 있습니다. 요구사항의 사용 등에 대해서는 다시 설명하지 않습니다. 이 시점에서 당신은 아직 배울 것이 많습니다.
약한 유형의 언어를 배워도 나아지는 게 없다고 느낄 때, 다시 강한 유형의 언어를 배울 수도 있습니다. 예를 들어 jsp를 만들기 위해 자바를 배우면 아무것도 없다는 것을 알게 될 것입니다. 세션을 당연하게 여기는 jsp의 경우 맵 및 해시맵과 같은 기존 데이터 구조를 사용하여 세션을 캡슐화하도록 선택할 수 있습니다. 프레임워크에서 제공하는 기능에 익숙할 수도 있지만 여기서는 실제로 데이터베이스 링크를 캡슐화해야 합니다. 개발을 용이하게 하기 위해 지도에서 메서드를 반환합니다.
PHP를 배우는 데 아무런 진전이 없다고 느낄 때, Linux를 배워야 할 수도 있습니다. 사실 많은 책을 읽을 필요는 없습니다. Linux 시스템으로 전환해서 사용해 보세요. Linux가 실제로 Windows보다 더 유용하다는 것을 알게 될 것입니다. lnmp/lamp 세트를 사용하고, 일부 쉘 코드를 작성하고, 데이터베이스를 자동으로 백업하고, 심지어 PHP를 따라 특정 기능을 수행할 수도 있습니다. PHP 프로그램을 디버그하기 위해 중단점을 사용하도록 PHP의 xdebug를 구성하려면 일부 PHP 확장을 작성하고 memcache를 구성하는 등의 작업도 매우 편리합니다. vim을 사용하여 무언가를 작성하고 Gcc 컴파일을 사용해 볼 수 있습니다. 프로그램을 디버깅하기 위해 gdb를 사용하고, 명령줄을 사용하여 더 많은 작업을 수행해 보면 실제로 php가 Linux와 완벽하게 일치한다는 것을 알게 될 것입니다.
현재로서는 이미 Linux 사용에 능숙합니다. 작은 프레임워크를 직접 구현해 보고 일반적인 프레임워크의 기술, PHP의 객체 지향, PHP의 매직 기능, PHP가 여러 상태를 구현하는 방법 및 방법을 분석해 보세요. PHP는 Apache에서 실행되며, nginx가 Apache보다 성능이 더 높은 이유, 여러 서버에서 세션을 공유하는 방법, 개발 프로세스 중 특정 상황에서 사용할 일부 인터페이스를 호출하기 위해 컬을 사용하는 방법, 직렬화/직렬화 해제를 사용하여 실현하는 방법 일부 데이터의 직렬화 및 저장, 역직렬화 세션 사용, 일부 웹 사이트의 콘텐츠를 크롤링하는 방법 및 일부 사용 습관을 개선하는 방법. 요컨대, 아직 해야 할 일이 많다는 것은 PHP에서 배울 것이 없다는 것이 아니라, 코딩 단계에 머물러서는 안 된다는 것입니다. 대부분은 지식 범위가 너무 작고 인지 수준이 너무 얕기 때문입니다.
프로그래밍은 쉽지 않지만, 그것을 배우고 소중히 여겨야 합니다. 직업을 찾는 것도 쉽지 않기 때문에 항상 자신을 발전시키기 위해 노력해야 합니다.
저작권 안내: 이 글은 해당 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.
이상으로 PHP의 여정을 다양한 측면을 포함하여 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.