> 백엔드 개발 > PHP7 > 본문

그 시절 php7을 사용하면서 겪었던 함정들

醉折花枝作酒筹
풀어 주다: 2023-02-18 07:44:01
앞으로
1718명이 탐색했습니다.

PHP는 "세계 최고의 프로그래밍 언어"가 되었지만, PHP의 일부 기능은 개발 과정에서 여전히 알 수 없는 문제를 일으켰습니다. 다음은 개발 과정에서 제가 겪은 몇 가지 함정입니다. 모든 시청자가 이로부터 교훈을 얻고 함정을 피할 수 있기를 바랍니다.

1. mysql_ 함수를 사용하지 마세요

드디어 이제 mysql_ 함수를 사용하면 안 되는 날이 왔습니다. PHP 7에서는 이러한 기능을 모두 코어에서 제거했습니다. 즉, 훨씬 더 나은 mysqli_ 기능이나 보다 유연한 PDO 구현으로 마이그레이션해야 한다는 의미입니다.

2. 정크 코드를 작성하지 마세요

이 내용은 이해하기 쉽지만 PHP 7의 속도 향상으로 인해 일부 문제가 숨겨질 수 있으므로 점점 더 중요해질 것입니다. PHP 7로 마이그레이션하면 사이트 속도가 더 빨라진다고 해서 사이트 속도에만 만족하지 마십시오.

개발자는 항상 요청 시 스크립트를 로드하고, 가능하면 연결하고, 효율적인 데이터베이스 쿼리를 작성하고, 가능하면 캐싱을 사용하는 등의 작업을 수행해야 합니다.

3. 파일 끝에 PHP 닫는 태그를 사용하지 마세요

보세요. 파일이 PHP 코드로 끝나면 WordPress의 핵심 코드 대부분이 마지막에 PHP 태그를 제거했습니다. 실제로 Zend Framework는 이를 특별히 비활성화합니다. PHP는 파일 끝에 닫는 태그를 요구하지 않으며, 이를 제거하면 끝에 공백 문자가 추가되지 않도록 할 수 있습니다.

4. 불필요한 참조 전달을 하지 마세요

저는 개인적으로 참조 전달을 좋아하지 않습니다. 때로는 이것이 유용하다는 것을 알고 있지만 때로는 코드를 이해하기 어렵게 만들고 결과를 예측하기 어렵게 만듭니다.

어떤 사람들은 코드 실행 속도가 빨라진다고 생각하지만 일부 수석 PHP 프로그래머에 따르면 이는 사실이 아닙니다.

인용이 나쁜 이유의 예는 PHP에 shuffle() 및 sort()가 내장되어 있다는 것입니다. 처리된 배열을 반환하는 대신 원래 배열을 수정하는데 이는 매우 비논리적입니다.

5. 루프에서 쿼리 실행

루프에서 쿼리를 실행하는 것은 매우 낭비입니다. 이는 시스템에 불필요한 스트레스를 주며 루프 외부에서 동일한 결과를 더 빠르게 얻을 수 있습니다. 이와 같은 것이 필요한 상황에 직면하면 일반적으로 데이터 배열을 구축하는 데 사용하는 두 개의 별도 쿼리를 사용하여 문제를 해결합니다. 그런 다음 배열을 반복하고 프로세스에서 쿼리를 수행할 필요가 없습니다.

여기에서는 WordPress를 사용하므로 일부 예외가 있을 수 있습니다. get_post_meta()는 데이터베이스에서 많은 데이터를 가져오지만 특정 블로그 게시물의 메타데이터를 반복하는 경우 루프에서 이를 사용할 수 있습니다. 이는 WordPress가 실제로 모든 메타데이터를 가져오고 처음 호출할 때 이를 캐시하기 때문입니다. 후속 호출에서는 데이터베이스 호출 없이 이 캐시된 데이터를 사용합니다.

이를 이해하는 가장 좋은 방법은 함수 설명서를 읽고 쿼리 모니터와 같은 도구를 사용하는 것입니다.

6. SQL 쿼리에 *를 사용하지 마세요

물론 이것은 MySQL 문제에 더 가깝지만 우리는 PHP에서 SQL 코드를 작성하는 데 익숙하므로 동일합니다. 그럼에도 불구하고, 가능하다면, 특히 데이터베이스에 많은 열이 있는 경우 SQL 쿼리에 와일드카드를 사용하지 마십시오.

필요한 행을 명시적으로 지정하고 해당 행만 가져와야 합니다. 이는 사용되는 리소스를 줄이고, 데이터를 보호하며, 상황을 최대한 명확하게 만드는 데 도움이 됩니다.

SQL의 경우 사용 가능한 모든 기능을 알고 속도를 최대한 테스트해야 합니다. 평균, 합계 또는 유사한 수치 계산을 계산할 때 PHP 함수 대신 SQL 함수를 사용하십시오. 특정 쿼리의 속도가 확실하지 않은 경우 테스트하고 다른 컴파일을 시도한 다음 가장 좋은 쿼리를 사용하십시오.

7. 사용자 입력을 신뢰하지 마세요

사용자 입력을 신뢰하는 것은 현명하지 않습니다. 항상 검증하고, 필터링하고, 탈출하고, 확인하고, 탈출구를 남겨두세요. 사용자 데이터에는 세 가지 문제가 있습니다. 우리 개발자는 모든 가능성을 고려하지 않고, 종종 부정확하며, 의도적으로 손상될 수 있습니다.

세심하게 고안된 시스템이 이러한 위협으로부터 보호합니다. filter_var()와 같은 내장 함수를 사용하여 적절한 값을 확인하고, 데이터베이스를 다룰 때는 이스케이프(또는 프리컴파일)하십시오.

WordPress에는 문제를 해결하는 몇 가지 기능이 있습니다. 자세한 내용은 사용자 데이터 유효성 검사, 이스케이프 및 필터링 문서를 참조하세요.

8. 똑똑해지지 마세요

당신의 목표는 당신의 의도를 더 명확하게 표현하는 우아한 코드를 작성하는 것이어야 합니다. 여러 레이어의 삼항 논리 및 기타 수단을 사용하여 모든 것을 한 단어 변수로 단축함으로써 각 페이지에서 0.01초를 최적화할 수 있습니다. 그러나 이것은 당신과 당신 주변 사람들에게 큰 문제를 야기할 뿐입니다.

변수 이름을 현명하게 지정하고, 코드를 문서화하고, 간결함보다 명확성을 우선시하세요. 많은 인라인 값이 필요 없이 문서 자체인 표준 객체 지향 코드를 사용하는 것이 훨씬 더 좋습니다.

9. 바퀴를 재발명하지 마세요

PHP는 오랫동안 존재해왔고 웹사이트는 더 오랫동안 만들어졌습니다. 구축해야 하는 것이 무엇이든 누군가가 이미 이전에 구축했을 가능성이 있습니다. 다른 사람들에게 지원을 요청하는 것을 두려워하지 마세요. Github은 여러분의 친구이고 Composer도 마찬가지이며 Packagist도 마찬가지입니다.

로깅 도구부터 색상 교정 도구까지, 성능 분석기부터 단위 테스트 프레임워크까지, Mailchimp API부터 Twitter Bootstrap까지 모든 것을 키를 누르거나 명령을 입력하여 사용할 수 있습니다.

10. 다른 언어를 무시하지 마세요 ​​

PHP 프로그래머라면 HTML, CSS, JavaScript 및 MySQL을 더 잘 이해할 수 있습니다. JavaScript를 다시 배울 시간입니다. JavaScript는 jQuery가 아니며, JavaScript를 좀 더 효율적으로 사용하려면 JavaScript를 제대로 배워야 합니다.

시간을 절약하고 코드 크기가 클수록 성능이 좋아지는 객체 지향 PHP도 있습니다. C#이나 Java 같은 언어의 경우에도 OOP를 이해하고 나면 이해하기가 더 쉽습니다.

패키지 관리자, 빌드 스크립트, CoffeeScript, LESS, SASS, YAML, 스크립팅 엔진 및 기타 강력한 도구에 대해 학습하여 지식을 확장하세요. 다른 프레임워크, 특히 Laravel을 살펴보는 것이 좋습니다.

Ruby, RoR, Android, iPhone 및 Windows Phone 앱 개발을 배우고 이를 사용하여 작업을 훌륭하게 수행하는 것은 어떻습니까? 그들이 당신의 안전 지대를 벗어나고 직업에 요구되는 것이기 때문에 이것이 무의미하다고 생각할 수도 있지만 그것이 바로 그들이었습니다. 모든 언어에는 배워야 할 실용적인 것뿐만 아니라 이전에 접해본 적이 없는 새로운 것도 있습니다.

위 내용은 그 시절 php7을 사용하면서 겪었던 함정들의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿