PHP 5.4于本月尘埃落定,它是 PHP 自 2009 年以来的首次重大更新。该版本对语言部分进行了增强,包括支持 Traits 和移除部分争议特性。
Traits
同 Java 和 .NET 一样,PHP 使用单一继承模型。虽然这种模型足够应付大部分用例场景,但有时用户也需要将一些通用样板代码放置其他无关联的类中。(.NET 的 Dispose 方法就是这类样板代码(boiler-plate code)中一个很好的例子。)为解决这样的问题,PHP5.4推出了 Traits。
Traits 是一个方案集合,它不属于任何实际类。用户没法创建 Trait 实例或直接调用 Trait 中的方法,相反,用户必须将 Traits 合并到实际的类当中方能使用它们。在优先级方面,Trait 方法会覆盖继承而来的同名方法,而当前合并类中的同名方法则会覆盖 Trait 方法。
Traits 之间拥有相同的优先级,因此默认情况下,将两个包含重叠方法名的 Traits 加入到相同类中是个错误的做法。当然,使用“insteadof”和“as”操作符可以手工解决冲突,从而避免这个错误。此外,“as”操作符还可以用于改变 Trait 的可见性(visibility)。
Traits 中的方法可以是抽象方法,用于支持 Traits 的部分泛化;同时,Traits 也可以对外暴露静态变量,每个包含 Traits 的类都将拥有该变量的一份拷贝。此外,在 Traits 中已经声明过的属性不可以再在包含它的类中声明。
其他语法改进
其他语法改进包括:
- 数组现在可以使用方括号进行声明,而不再需要使用“array”函数。新的声明方式除了略微简洁之外,没有其他影响;
- 现在可以直接对函数返回值进行数组取值。在此之前,函数返回值的结果必须先存入一个临时变量中,如:$FirstName = GetNames ();
- PHP 5.4 中的闭包现在可以使用“$this”指针,这在以前是不可以的;
- 现在可以在实例化时访问类成员,如: (new CustomerService)->Delete (customerId);
- 采用“0b”前缀标识二进制数。
命令行 Web 服务器
PHP 5.4 提供了自己的 Web 服务器,你可以从命令行中启动它。该 Web 服务器的设计目的仅在于帮助开发,它不会取代你的生产 Web 服务器。
弃用特性
备受指责的 Register Globals 已从 PHP 中完全删除。十年来,该特性一直以其频繁发生的安全漏洞而著称。2002年该特性被设置为默认关闭。2009年发布的 PHP5.3 将该特性标记为“弃用”,想必从那时起,大部分开发人员已经不再使用它。
从 PHP 中移除的另一个不讨喜的特性是 Magic Quotes。Magic Quotes 本意是对字符串进行自动转义(escape)以试图避免 SQL 注入攻击。但是由于字符串的转义使用方法常与特定背景相关,因此,比起试图解决的问题,它反而造成了更多的问题。该特性同 Register Globals 一样,也在 2009 年被标记为“弃用”。
PHP 中的 break 和 continue 语句之后可以跟上一个参数用来指明跳出的循环层数。如果不指定参数,它会像 VB、C#或 Java 一样跳出最内层的循环。在 PHP 5.4 之前,开发人员可以向 break 语句传递一个变量,而现在只能传递常量。
PHP 允许参数按引用传递。在早期版本中,你可以通过为调用点添加修饰来指明变量按引用传递。在 PHP 5.4 中,该选项已被移除。相反,现代 PHP 编程只需要在函数声明时指定按引用传递即可。与 C# 不同,你不需要同时在声明和调用点指定按引用传递。
查看英文原文:http://www.infoq.com/news/2012/03/PHP-5.4

PHP 다차원 어레이에서 총 요소 수를 계산하는 것은 재귀 적 또는 반복적 인 방법을 사용하여 수행 할 수 있습니다. 1. 재귀 방법은 배열을 가로 지르고 중첩 배열을 재귀 적으로 처리함으로써 계산됩니다. 2. 반복 방법은 스택을 사용하여 깊이 문제를 피하기 위해 재귀를 시뮬레이션합니다. 3. Array_Walk_Recursive 함수도 구현할 수 있지만 수동 계산이 필요합니다.

PHP에서, do-while 루프의 특성은 루프 본체가 적어도 한 번 실행되도록하고 조건에 따라 루프를 계속할지 여부를 결정하는 것입니다. 1) 조건부 점검 전에 루프 본체를 실행하며, 사용자 입력 확인 및 메뉴 시스템과 같이 작업을 적어도 한 번 수행 해야하는 시나리오에 적합합니다. 2) 그러나, do-while 루프의 구문은 초보자들 사이에서 혼란을 야기 할 수 있으며 불필요한 성능 오버 헤드를 추가 할 수 있습니다.

PHP의 효율적인 해싱 스트링은 다음 방법을 사용할 수 있습니다. 1. 빠른 해싱에 MD5 기능을 사용하지만 비밀번호 저장에는 적합하지 않습니다. 2. SHA256 기능을 사용하여 보안을 향상시킵니다. 3. Password_hash 함수를 사용하여 비밀번호를 처리하여 최고 보안과 편의성을 제공하십시오.

PHP에서 배열 슬라이딩 윈도우 구현 기능은 SlideWindow 및 SlideWindowAverage 기능으로 수행 할 수 있습니다. 1. Slide-Window 함수를 사용하여 배열을 고정 크기 서브 어레이로 분할하십시오. 2. SlideWindowAverage 함수를 사용하여 각 창의 평균 값을 계산하십시오. 3. 실시간 데이터 스트림의 경우, 비동기 처리 및 이상치 감지를 Reactphp를 사용하여 사용할 수 있습니다.

PHP의 __clone 방법은 객체 클로닝시 사용자 정의 작업을 수행하는 데 사용됩니다. 클론 키워드를 사용하여 객체를 클로닝 할 때 객체에 __ 클론 메소드가있는 경우 방법이 자동으로 호출되어 클로닝 프로세스 중에 클로닝 된 객체의 독립성을 보장하기 위해 참조 유형 속성을 재설정하는 것과 같은 클로닝 프로세스 중에 맞춤형 처리가 가능합니다.

PHP에서 GOTO 진술은 프로그램의 특정 태그로 무조건 점프하는 데 사용됩니다. 1) 복잡한 중첩 루프 또는 조건부 명세서의 처리를 단순화 할 수 있지만 2) GOTO를 사용하면 코드를 이해하고 유지하기가 어렵게 만들 수 있으며 3) 구조화 된 제어 문의 사용에 우선 순위를 부여하는 것이 좋습니다. 전반적으로, GOTO는 조심스럽게 사용해야하며 모범 사례를 따라 코드의 가독성과 유지 보수 가능성을 보장합니다.

PHP에서 내장 기능, 사용자 정의 기능 및 타사 라이브러리를 사용하여 데이터 통계를 달성 할 수 있습니다. 1) array_sum () 및 count ()와 같은 내장 함수를 사용하여 기본 통계를 수행하십시오. 2) 중앙값과 같은 복잡한 통계를 계산하기 위해 사용자 정의 기능을 작성하십시오. 3) PHP-ML 라이브러리를 사용하여 고급 통계 분석을 수행하십시오. 이러한 방법을 통해 데이터 통계를 효율적으로 수행 할 수 있습니다.

예, PHP의 익명 함수는 이름이없는 함수를 나타냅니다. 다른 함수의 매개 변수로 전달되고 함수의 리턴 값으로 전달 될 수있어 코드를보다 유연하고 효율적으로 만듭니다. 익명 기능을 사용하는 경우 범위 및 성능 문제에주의를 기울여야합니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

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

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

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

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경