十条技巧来提升你的PHP编程水平_PHP教程
从PHP在1995年诞生就快速的成长。此后,php已经成为web应用中最流行的编程语言。许多流行的网站都是由php驱动,而且大多数的脚本和网络程序都是由这个流行语言编写的。
由于PHP的盛行,使网络开发者几乎不可能不懂一点的PHP知识。这个教程针对的是那些只是经历了PHP的初级阶段,并且准备卷起袖子,深入进去这个语言的人。下面列出的是PHP开发者应该学习并且在每次编程时使用的十条优秀的技术。这些经验能够加速开发者精通并且让代码更易感知的、整洁而且对代码执行来说更优化。
1.使用一个SQL注入攻击表A list of common SQL injections.
SQL注入攻击是一个险恶的行为,SQL注入攻击是一个可以让黑客利用代码的弱点进入你的数据库的安全漏洞利用。虽然这篇文章不是Mysql相关的,但是很多PHP程序员都是用的Mysql数据库,所以如果你想写安全的代码的话学习如何避免(SQL注入)是很容易的。
Furruh Mavituna有一个很好的SQL injection cheat sheet,里面有一部分是关于PHP和Mysql编程的弱点的。如果你能避免这个cheat sheet指出的习惯,你的代码会变得更少的易于脚本攻击。
2. 学习比较操作符之间的不同PHP’s list of comparison operators.
比较操作符是PHP中巨大的一部分,而且很多程序员不能像他们应该的那样在它们之间的区别方面那么熟练。实际上,一篇在I/O reader的文章表明,很多PHP程序员不能正确的说出比较操作符之间的区别。Tsk tsk。
These are extremely useful and most PHPers can’t tell the difference between == and ===. Essentially, == looks for equality, and by that PHP will generally try to coerce data into similar formats, eg: 1 == ‘1′ (true), whereas === looks for identity: 1 === ‘1′ (false). The usefulness of these operators should be immediately recognized for common functions such as strpos(). Since zero in PHP is analogous to FALSE it means that without this operator there would be no way to tell from the result of strpos() if something is at the beginning of a string or if strpos() failed to find anything. Obviously this has many applications elsewhere where returning zero is not equivalent to FALSE.
要明白,==代表着同等,===代表着一致。你可以看一篇在PHP.net网站上的list of the comparison operators 这篇文章。
3 剪短else语句需要声明的是第3条和第4条都有点让代码的可读性降低,这两条强调的是速度和执行。如果你选择不牺牲可读性,那么你可以略过这两条。
可以让代码更简单更小的任何事情通常都是一个好习惯。这条的目的是将“中间人”从else语句中拿出来,so to speak。Christian Montoya有一个非常好的用短的else语句来减少字符的例子。
一般的else语句
[code language="php"]
if( this condition )
{
$x = 5;
}
else
{
$x = 10;
}
[/code]
如果$x默认的是10,将它初始化为10就 可以了。没有必要再去麻烦的输入else部分。
[code language="php"]
$x = 10;
if( this condition )
{
$x = 5;
}
[/code]
在代码的空间节省上好像没有太大的不同,如果在你的程序中有许多else语句的话,这样会明显的不同。
4.省略掉括号Dropping brackets saves space and time in your code.
就像在写else语句时那样,你也可以在通过省略掉在紧跟在一个控制语句中的的表达式中的括号来节省来节省一些字符。Evolt.org有一个简单的例子列出了一个省略括号的结构
[code language="php"]
if ($gollum == 'halfling') {
$height --;
}
[/code]
这个和下面的一样:
[code language="php"]
if ($gollum == 'halfling') $height --;
[/code]
甚至你可以用在复杂的情况
[code language="php"]
if ($gollum == 'halfling') $height --;
else $height ++;
if ($frodo != 'dead')
echo 'Gosh darnit, roll again Sauron';
foreach ($kill as $count)
echo 'Legolas strikes again, that makes' . $count . 'for me!';
[/code]
5选择str_replace而不是ereg_replace和preg_replaceSpeed tests show that str_replace() is 61% faster.
从效率的角度来看,在替换字符串方面 str_replace()比正则表达式更高效。实际上,根据Making the Web所说,str_replace()比像ereg_replace()和 preg_replace()这样的正则表达式效率要高61%。
如果你正在使用正则表达式的话,ereg_replace() 和preg_replace()会比str_replace()快很多。
6. 使用三元操作符考虑使用三元操作符来代替完全使用 if/else语句。PHP Value给了一个非常好的例子来说明三元操作符是什么
[code http://www.yeeyan.com/articles/tag/php" target=_blank $included="null">php
//PHP COde Example usage for: Ternary Operator
$todo = (empty($_POST[’todo’])) ? ‘default’ : $_POST[’todo’];
// The above is identical to this if/else statement
if (empty($_POST[’todo’])) {
$action = ‘default’;
} else {
$action = $_POST[’todo’];
}
?>
[/code]
三元操作符节省了你的行空间,而且让你的代码不是那么混乱,方便浏览。注意不要在一个表达式语句中使用多于一个三元操作符,因为PHP并不是永远都知道在这种情况下应该怎么做。
7 memcachedMemcached is an excellent database caching system to use with PHP.
虽然有很多缓存方案可供选择,Memcached做为最高效的数据库缓存名列前茅。它不是执行起来最简单的缓存系统,但是如果你用php搭建一个网站使用数据库的话,Memcached肯定能够加速你的网站。Memcached这个缓存系统第一次是为了LiveJournal这个blog网站而搭建的。
PHP.net有一个优秀的教程来介绍如何在你的项目中安装和使用memcached。
8.使用一个框架CakePHP is one of the top PHP frameworks.
你可能不能在你的每个项目中使用PHP框架,但是像 CakePHP, Zend, Symfony and CodeIgniter这些框架可以大大的减少你构建一个网站的时间。框架是一个通过包装常用的机制来提高发展速度的软件。框架可以用来帮助减少开发网络应用程序和网络服务的开销。
如果在编写一个网站的时候你可以通过框架来打理反复的工作,你会更高速度的进行开发。写越少的代码,就会更少的进行调试和除错。
9.正确的使用抑制错误操作符错误抑制操作符(或者在php手册中叫做错误控制符)是@这个符号,当在PHP中放在一个语句前面的时候,它只是简单的告诉程序不要(原文中此处为 now,估计为原作者笔误)显示这条语句产生的任何错误。如果你对这个值不确定或者不想抛出任何错误的话,这个操作符非常有用。
然而,很多程序员错误的使用错误抑制操作符。如果写代码时你把运行效率谨记在心的话,这个@操作符非常的慢而且运行代价很高。
Michel Fortin有一些例子来说明如何用其他方法来回避@这个错误抑制操作符。这是一个他使用isset这个函数 来替代错误印制操作符的方法。
[code language="php"]
if (isset($albus)) $albert = $albus;
else $albert = NULL;
[/code]
等同于:
[code language="php"]
$albert = @$albus;
[/code]
但是虽然第二种方法比较有条理的,但是运行速度要慢两倍左右。一个好的解决方法是通过引用来分配变量,这样不会触发任何警告,例如:
[code language="php"]
$albert = &$albus;
[/code]
需要特别指出的是,这些改变可能会产生一些意外的副作用,应该用到对效率要求比较高的那些不会受到影响的地方。
10.使用isset代替strlenSwitching isset for strlen makes calls about five times faster.
如果你正在准备检查一个字符串的长度,用isset来代替strlen。通过使用isset,你的调用会快五倍。需要指出的是,通过使用isset,如果变量不存在的话,你的调用也会有效。
D-talk有个例子介绍如何swap out isset for strlen:
A while ago I had a discussion about the optimal way to determine a string length in PHP. The obvious way is to use strlen().
However to check the length of a minimal requirement it’s actually not that optimal to use strlen. The following is actually much faster (roughly 5 times)
这只是一个小变化,但是像今天所讲到的这些技巧,加起来就会成就一个快速,干净的代码。
[via 10 Advanced PHP Tips To Improve Your Programming]

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

숙련된 PHP 개발자라면 이미 그런 일을 해왔다는 느낌을 받을 것입니다. 귀하는 상당한 수의 애플리케이션을 개발하고, 수백만 줄의 코드를 디버깅하고, 여러 스크립트를 수정하여 작업을 수행했습니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

PHP의 마법 방법은 무엇입니까? PHP의 마법 방법은 다음과 같습니다. 1. \ _ \ _ Construct, 객체를 초기화하는 데 사용됩니다. 2. \ _ \ _ 파괴, 자원을 정리하는 데 사용됩니다. 3. \ _ \ _ 호출, 존재하지 않는 메소드 호출을 처리하십시오. 4. \ _ \ _ get, 동적 속성 액세스를 구현하십시오. 5. \ _ \ _ Set, 동적 속성 설정을 구현하십시오. 이러한 방법은 특정 상황에서 자동으로 호출되어 코드 유연성과 효율성을 향상시킵니다.
