> 백엔드 개발 > PHP 튜토리얼 > 간과된 일부 PHP 기능(정리됨)

간과된 일부 PHP 기능(정리됨)

WBOY
풀어 주다: 2016-08-08 09:29:38
원래의
1490명이 탐색했습니다.

출처: http://www.gracecode.com/posts/3013.html

알 필요는 없습니다. 사실 우리에게는 아직 좋은 점이 많이 있습니다. 우리가 아직 발견하지 못한 PHP에 익숙합니다. 이 글을 보고 여러번 눈물이 났습니다. 적극 추천하고 제가 직접 정리하겠습니다.

sys_getloadavg()

이 함수는 현재 시스템의 로드 평균 정보를 반환합니다(물론 Windows에서는 해당되지 않음), 자세한 설명서는 해당 PHP 설명서를 참조하세요. 문서에 샘플 코드가 있으며, 기본적으로 사용법을 보실 수 있습니다.

<codecourier new word-wrap:break-word font-size:0.9em overflow-x:auto><?php $load = sys_getloadavg(); if ($load[0] > 80) { header('HTTP/1.1 503 Too busy, try again later'); die('Server too busy. Please try again later.'); } <p>PS, "불행히도" PHP 환경에 이 기능이 없는 경우 </p> <precourier new white-space:pre-wrap word-wrap:break-word border:1px solid rgb font-size:0.9em overflow-x:auto color:rgb background-color:rgb><codecourier new word-wrap:break-word font-size:0.9em overflow-x:auto>if (!function_exists('sys_getloadavg')) { function sys_getloadavg() { $loadavg_file = '/proc/loadavg'; if (file_exists($loadavg_file)) { return explode(chr(32),file_get_contents($loadavg_file)); } return array(0,0,0); } } <p>이 기능을 올바르게 사용하려면 다음 코드를 사용하는 것을 고려해 보세요. 서버에 가해지는 부담을 어느 정도 줄일 수 있습니다. </p> <p>pack()</p> <p>pack 바이너리 문자열을 압축하는 데 사용되는 unpack에 해당하는 함수도 있습니다. 기사에 나온 저자의 예는 매우 명확합니다 </p> <precourier new white-space:pre-wrap word-wrap:break-word border:1px solid rgb font-size:0.9em overflow-x:auto color:rgb background-color:rgb><codecourier new word-wrap:break-word font-size:0.9em overflow-x:auto>$pass_hash = pack("H*", md5("my-password")); <p>PHP5를 사용하면 바로 이런 모습이 됩니다. </p> <precourier new white-space:pre-wrap word-wrap:break-word border:1px solid rgb font-size:0.9em overflow-x:auto color:rgb background-color:rgb><codecourier new word-wrap:break-word font-size:0.9em overflow-x:auto>$pass_hash = md5("my-password", true); // PHP 5+ <p>이렇게 하면 문자열 저장 공간을 줄일 수 있다는 장점 중 하나입니다(얼마나 절약할 수 있나요? 이 글은 또 다른 글일 수도 있습니다). ). </p> <p>다음을 통해 배열을 패킹할 수 있는 샘플 코드도 있습니다.</p> <precourier new white-space:pre-wrap word-wrap:break-word border:1px solid rgb font-size:0.9em overflow-x:auto color:rgb background-color:rgb><codecourier new word-wrap:break-word font-size:0.9em overflow-x:auto><?php function pack_array($v,$a) { return call_user_func_array(pack,array_merge(array($v),(array)$a)); } </code>
로그인 후 복사

cal_days_in_month()

이 함수는 지정된 달의 일 수를 직접 반환할 수 있습니다. 예를 들어

<codeCourier New',sans-serif; word-wrap:break-word; font-size:0.9em; overflow-x:auto">$days = cal_days_in_month(CAL_GREGORIAN, date("m"), date("Y")); // 31 </code>
로그인 후 복사

유사한 기능을 직접 구현했다고 장담할 수 있습니다. ^)

_()

글쎄, 이것은 실제로 PHP 함수입니다. (가장 짧은 PHP 함수 내장 함수일 수도 있습니다). _()은 "닉네임"이고 큰 이름은 gettext()입니다.

워드프레스 스킨을 써본 친구들은 __(), _e() 이런 기능은 사실 알고 있을 거에요. PHP에는 이미 관련 기능이 포함되어 있습니다.

<codeCourier New',sans-serif; word-wrap:break-word; font-size:0.9em; overflow-x:auto">// Set language to German setlocale(LC_ALL, 'de_DE'); // Specify location of translation tables bindtextdomain("myPHPApp", "./locale"); // Choose domain textdomain("myPHPApp"); echo _("Have a nice day"); </code>
로그인 후 복사

gettext를 사용하여 다중 언어 애플리케이션을 작성할 수 있습니다. 이제 로케일 파일을 작성하는 방법에 관심이 있을 수 있지만 더 이상 이 기사의 초점은 아닙니다. 여기.

get_browser()

솔직히 이 기능을 보고 눈물이 났습니다. 이 기능을 사용하면 더 이상 $_SERVER['HTTP_USER_AGENT'] 문자열을 직접 분석할 필요가 없습니다.

자세한 내용은 여기에서 확인하실 수 있습니다. 이 기능을 사용하기 전에 browscap.ini 구성 파일이 필요할 수 있으며, 처리하실 수 있을 것으로 믿습니다.

debug_print_backtrace()

과거에는 함수 호출 스택을 보려면 xdebug와 같은 확장 프로그램을 사용했습니다. 실제로 PHP5 버전에는 관련 함수가 내장되어 있습니다.

그런데, 이 함수의 이름이 기억나지 않는다면 이 코드를 사용하여 동일한 목표를 달성할 수 있는 약간의 "고통스러운" 팁을 공유하고 싶습니다. 해당 기능을 기억하면 신뢰할 수 있음):

getTraceAsString()));

natsort()

이 기능은 모든 사람이 사용해야 할 자연스러운 정렬에 사용됩니다. 관련 문서 링크와 샘플 코드 게시

$items = array("100 apples", "5 apples", "110 apples", "55 apples"); // normal sorting: sort($items); print_r($items); # Outputs: # Array # ( # [0] => 100 apples # [1] => 110 apples # [2] => 5 apples # [3] => 55 apples # ) natsort($items); print_r($items); # Outputs: # Array # ( # [2] => 5 apples # [3] => 55 apples # [0] => 100 apples # [1] => 110 apples # )

자연 정렬 알고리즘 규칙은 여기 문서를 참조하세요.

glob()

이 함수의 기능도 사람을 울립니다. 함수에 대한 이야기는 하지 말고 바로 예제 코드로 넘어가겠습니다.

foreach (glob("*.php") as $file) { echo "$file\n"; }

무엇과 비교해 보세요. 이 기능에 대해 이미 알고 계시다면 (경유로) 디렉토리를 표시하는 것과 같은 더 많은 "게임"을 가질 수 있습니다:

$dirs = array_filter(glob($path.'*'), 'is_dir');

물론, 파일 재귀를 위해 SPL 확장자를 사용하는 것도 고려할 수 있습니다.

神仙의 보충:

glob 有个参数选项 GLOB_ONLYDIR 就可以只列目录

PHP 필터

여전히 문자열을 정기적으로 검증하고 있다면 실제로는 "Out"입니다. PHP5.2 버전부터 PHP 필터가 내장되어 있습니다. 이 모듈은 이메일, URL 등이 합법적인지 구체적으로 확인하는 데 사용됩니다. 샘플 코드:

var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));

새 모듈이므로

filter_var('abc', FILTER_VALIDATE_BOOLEAN); // bool(false) filter_var('0', FILTER_VALIDATE_BOOLEAN); // bool(false) 과 같은 함정이 여전히 많이 있습니다.

하지만 이것이 우리의 노력을 막지는 못합니다. PHP 필터에 대한 자세한 내용은 다른 기사를 작성할 수 있다고 생각합니다.

-- Split --

마지막으로, PHP는 실제로 오래 지속되는 도구라는 점을 한탄합니다. 따라서 수시로 PHP 문서를 살펴보면 매번 새로운 것을 배우게 될 것입니다.


이상에는 관련 내용을 포함하여 간과된 PHP 기능(정리)을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

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