출처: 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 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.