목차
1、放弃对Windows XP和2003 的支持  
2.弃用e修饰符  
 3.新增函数和类  
4.一个简单的密码散列API  
5.新的语言特性和增强功能。  
6.调用empty()函数(和其他表达式)一起工作  
7.获取完整类别名称 
8.参数跳跃   
9.标量类型提示   
10.Getter 和 Setter   
11.生成器   
12.列表解析和生成器表达式   
13.finally关键字  
14.foreach 支持list()  
15.增加了opcache扩展  
16.非变量array和string也能支持下标获取了  
백엔드 개발 PHP 튜토리얼 PHP 5.5中的新特性及被弃用的功能函数总结

PHP 5.5中的新特性及被弃用的功能函数总结

Jun 20, 2016 pm 01:03 PM
PHP 함수

PHP5.5新特性及与php5.4的区别总结
现在,让我们来看看PHP5.5 可能会新增的功能:   

1、放弃对Windows XP和2003 的支持  

2.弃用e修饰符  

e修饰符是指示preg_replace函数用来评估替换字符串作为PHP代码,而不只是仅仅做一个简单的字符串替换。不出所料,这种行为会源源不断的出现安全问题。这就是为什么在PHP5.5 中使用这个修饰符将抛出一个弃用警告。作为替代,你应该使用preg_replace_callback函数。你可以从RFC找到更多关于这个变化相应的信息。  

 3.新增函数和类  

boolval()  
PHP已经实现了strval、intval和floatval的函数。为了达到一致性将添加boolval函数。它完全可以作为一个布尔值计算,也可以作为一个回调函数。   
  
hash_pbkdf2()  
PBKDF2全称“Password-Based Key Derivation Function 2”,正如它的名字一样,是一种从密码派生出加密密钥的算法。这就需要加密算法,也可以用于对密码哈希。更广泛的说明和用法示例  
  
array_column()  

$userNames = array_column($users, 'name');  
// is the same as  
$userNames = [];  
foreach ($users as $user) {  
    $userNames[] = $user['name'];  
}  
로그인 후 복사

intl 扩展
将有许多改进 intl的扩展。例如,将会有新的IntlCalendar,IntlGregorianCalendar,IntlTimeZone,IntlBreakIterator,IntlRuleBasedBreakIterator,IntlCodePointBreakIterator类。之前,我竟然不知道有这么多关于intl扩展,如果你想知道更多,我建议你去最新公告里找 Calendar和 BreakIterator。

4.一个简单的密码散列API

$password = "foo";    
// creating the hash    
$hash = password_hash($password, PASSWORD_BCRYPT);    
// verifying a password    
if (password_verify($password, $hash)) {    
    // password correct!    
} else {    
    // password wrong!    
}   
로그인 후 복사

5.新的语言特性和增强功能。

常量引用
“常量引用”意味着数组可以直接操作字符串和数组字面值。举两个例子:

function randomHexString($length) {    
    $str = '';    
    for ($i = 0; $i < $length; ++$i) {    
        $str .= "0123456789abcdef"[mt_rand(0, 15)]; // direct dereference of string    
    }    
}    
function randomBool() {    
    return [false, true][mt_rand(0, 1)]; // direct dereference of array    
}   
로그인 후 복사


我不认为在实践中会使用此功能,但它使语言更加一致。请参阅 RFC。

6.调用empty()函数(和其他表达式)一起工作

目前,empty()语言构造只能用在变量,而不能在其他表达式。
在特定的代码像empty($this->getFriends())将会抛出一个错误。作为PHP5.5 这将成为有效的代码

7.获取完整类别名称

PHP5.3 中引入命名空间的别名类和命名空间短版本的功能。虽然这并不适用于字符串类名称

use Some\Deeply\Nested\Namespace\FooBar;    
// does not work, because this will try to use the global `FooBar` class    
$reflection = new ReflectionClass(&#39;FooBar&#39;);   
echo FooBar::class;  
로그인 후 복사


为了解决这个问题采用新的FooBar::class语法,它返回类的完整类别名称

8.参数跳跃

如果你有一个函数接受多个可选的参数,目前没有办法只改变最后一个参数,而让其他所有参数为默认值。
RFC上的例子,如果你有一个函数如下:

function create_query($where, $order_by, $join_type=&#39;&#39;, $execute = false, $report_errors = true) { ... }  
로그인 후 복사


那么有没有办法设置$report_errors=false,而其他两个为默认值。为了解决这个跳跃参数的问题而提出:

create_query("deleted=0", "name", default, default, false);  
로그인 후 복사


我个人不是特别喜欢这个提议。在我的眼睛里,代码需要这个功能,只是设计不当。函数不应该有12个可选参数。

9.标量类型提示

标量类型提示原本计划进入5.4,但由于缺乏共识而没有做。获取更多关于为什么标量类型提示没有做进PHP的信息,请参阅: 标量类型提示比你认为的更难。
对于PHP5.5 而言,针对标量类型提示讨论又一次出现,我认为这是一个相当不错的 提议。
它需要通过输入值来指定类型。例如:123,123.0,“123”都是一个有效的int参数输入,但“hello world”就不是。这与内部函数的行为一致。

function foo(int $i) { ... }  
foo(1);      // $i = 1  
foo(1.0);    // $i = 1  
foo("1");    // $i = 1  
foo("1abc"); // not yet clear, maybe $i = 1 with notice  
foo(1.5);    // not yet clear, maybe $i = 1 with notice  
foo([]);     // error  
foo("abc");  // error  
로그인 후 복사

10.Getter 和 Setter

如果你从不喜欢写这些getXYZ()和setXYZ($value)方法,那么这应该是你最受欢迎的改变。提议添加一个新的语法来定义一个属性的设置/读取:

<?php  
  
class TimePeriod {  
    public $seconds;  
  
    public $hours {  
        get { return $this->seconds / 3600; }  
        set { $this->seconds = $value * 3600; }  
    }  
}  
$timePeriod = new TimePeriod;  
$timePeriod->hours = 10;  
var_dump($timePeriod->seconds); // int(36000)  
var_dump($timePeriod->hours);   // int(10)  
로그인 후 복사


当然还有更多的功能,比如只读属性。如果你想要知道更多,请参阅 RFC。

11.生成器

目前,自定义迭代器很少使用,因为它们的实现,需要大量的样板代码。生成器解决这个问题,并提供了一种简单的样板代码来创建迭代器。
例如,你可以定义一个范围函数作为迭代器:

<?php  
function *xrange($start, $end, $step = 1) {  
    for ($i = $start; $i < $end; $i += $step) {  
        yield $i;  
    }  
}  
foreach (xrange(10, 20) as $i) {  
    // ...  
}  
로그인 후 복사


上述xrange函数具有与内建函数相同的行为,但有一点区别:不是返回一个数组的所有值,而是返回一个迭代器动态生成的值。

12.列表解析和生成器表达式

列表解析提供一个简单的方法对数组进行小规模操作:
$firstNames = [foreach ($users as $user) yield $user->firstName];
上述列表解析相等于下面的代码:

$firstNames = [];  
foreach ($users as $user) {  
    $firstNames[] = $user->firstName;  
}  
로그인 후 복사


也可以这样过滤数组:

$underageUsers = [foreach ($users as $user) if ($user->age < 18) yield $user];  
로그인 후 복사


生成器表达式也很类似,但是返回一个迭代器(用于动态生成值)而不是一个数组。

13.finally关键字

这个和java中的finally一样,经典的try ... catch ... finally 三段式异常处理。

14.foreach 支持list()

对于“数组的数组”进行迭代,之前需要使用两个foreach,现在只需要使用foreach + list了,但是这个数组的数组中的每个数组的个数需要一样。看文档的例子一看就明白了。

$array = [  
    [1, 2],  
    [3, 4],  
];  
foreach ($array as list($a, $b)) {  
    echo "A: $a; B: $b\n";  
}  
로그인 후 복사

15.增加了opcache扩展  

使用opcache会提高php的性能,你可以和其他扩展一样静态编译(--enable-opcache)或者动态扩展(zend_extension)加入这个优化项。  

16.非变量array和string也能支持下标获取了  

echo array(1, 2, 3)[0];  
echo [1, 2, 3][0];  
echo "foobar"[2];  


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

PHP 함수를 통해 이미지의 지연 로딩 효과를 최적화하는 방법은 무엇입니까? PHP 함수를 통해 이미지의 지연 로딩 효과를 최적화하는 방법은 무엇입니까? Oct 05, 2023 pm 12:13 PM

PHP 함수를 통해 이미지의 지연 로딩 효과를 최적화하는 방법은 무엇입니까? 인터넷의 발달로 인해 웹 페이지의 이미지 수가 증가하고 있으며 이는 페이지 로딩 속도에 부담을 주고 있습니다. 사용자 경험을 개선하고 로딩 시간을 줄이기 위해 이미지 지연 로딩 기술을 사용할 수 있습니다. 이미지의 지연 로딩은 이미지 로딩을 지연시킬 수 있습니다. 사용자가 표시 영역으로 스크롤할 때만 이미지가 로드되므로 페이지 로딩 시간이 줄어들고 사용자 경험이 향상될 수 있습니다. PHP 웹 페이지를 작성할 때 일부 기능을 작성하여 이미지의 지연 로딩 효과를 최적화할 수 있습니다. 아래 세부정보

PHP 기능을 통해 메모리 사용량을 줄이는 방법은 무엇입니까? PHP 기능을 통해 메모리 사용량을 줄이는 방법은 무엇입니까? Oct 05, 2023 pm 01:45 PM

PHP 함수를 통해 메모리 사용량을 줄이는 방법 개발 시 메모리 사용량은 매우 중요한 고려 사항입니다. 프로그램에서 많은 양의 메모리를 사용하면 속도가 느려지거나 프로그램이 충돌할 수도 있습니다. 따라서 메모리 사용량을 합리적으로 관리하고 줄이는 것은 모든 PHP 개발자가 주목해야 할 문제입니다. 이 기사에서는 PHP 함수를 통해 메모리 사용량을 줄이는 몇 가지 방법을 소개하고 독자의 참고를 위한 구체적인 코드 예제를 제공합니다. PHP에서 변수를 해제하려면 unset() 함수를 사용하십시오. 변수가 더 이상 필요하지 않으면 다음을 사용하십시오.

PHP 함수 소개—curl_multi_getcontent(): cURL 세션의 콘텐츠 가져오기 PHP 함수 소개—curl_multi_getcontent(): cURL 세션의 콘텐츠 가져오기 Jul 26, 2023 pm 03:01 PM

PHP 기능 소개—curl_multi_getcontent(): cURL 세션의 콘텐츠를 가져옵니다. PHP 개발에서는 네트워크를 통해 다른 서버로부터 데이터를 요청해야 하는 경우가 많습니다. 그리고 cURL(ClientURL)은 PHP에서 네트워크 통신에 사용되는 강력한 PHP 확장 라이브러리입니다. cURL은 일련의 함수를 제공하며 그 중 하나는 cURL 세션의 콘텐츠를 얻는 데 사용되는 cur_multi_getcontent()입니다.

PHP는 더 이상 사용되지 않습니다: ereg_replace() 함수는 더 이상 사용되지 않습니다 - 솔루션 PHP는 더 이상 사용되지 않습니다: ereg_replace() 함수는 더 이상 사용되지 않습니다 - 솔루션 Aug 18, 2023 am 10:48 AM

PHPDeprecated: Functionereg_replace()isdeprecated-Solution PHP에서 개발할 때 일부 함수가 더 이상 사용되지 않는다고 선언되는 문제에 자주 직면합니다. 이는 최신 PHP 버전에서는 이러한 기능이 제거되거나 대체될 수 있음을 의미합니다. 일반적인 예 중 하나는 ereg_replace() 함수입니다. ereg_replace

PHP 이미지 처리 기능을 이용한 이미지 편집 및 처리 기능 구현 방법 요약 PHP 이미지 처리 기능을 이용한 이미지 편집 및 처리 기능 구현 방법 요약 Nov 20, 2023 pm 12:31 PM

PHP 이미지 처리 기능은 이미지를 처리하고 편집하는 데 특별히 사용되는 기능 세트로 개발자에게 풍부한 이미지 처리 기능을 제공합니다. 이러한 기능을 통해 개발자는 자르기, 크기 조정, 회전, 워터마크 추가 등의 작업을 구현하여 다양한 이미지 처리 요구 사항을 충족할 수 있습니다. 먼저 PHP 이미지 처리 기능을 사용하여 이미지 자르기 기능을 구현하는 방법을 소개하겠습니다. PHP는 이미지를 자르는 데 사용할 수 있는 imagecrop() 함수를 제공합니다. 자르기 영역의 좌표와 크기를 전달하여 이미지를 자를 수 있습니다.

PHP 함수 소개: strtr() 함수 PHP 함수 소개: strtr() 함수 Nov 03, 2023 pm 12:15 PM

PHP 함수 소개: strtr() 함수 PHP 프로그래밍에서 strtr() 함수는 매우 유용한 문자열 대체 함수입니다. 문자열의 지정된 문자나 문자열을 다른 문자나 문자열로 바꾸는 데 사용됩니다. 이 기사에서는 strtr() 함수의 사용법을 소개하고 몇 가지 구체적인 코드 예제를 제공합니다. strtr() 함수의 기본 구문은 다음과 같습니다. strtr(string$str, array$replace) 여기서 $str은 대체할 원래 단어입니다.

PHP 함수와 다른 언어의 함수 비교 PHP 함수와 다른 언어의 함수 비교 Apr 10, 2024 am 10:03 AM

PHP 함수는 다른 언어의 함수와 유사하지만 몇 가지 고유한 기능도 있습니다. 구문적으로 PHP 함수는 function으로 선언되고, JavaScript는 function으로 선언되며, Python은 def로 선언됩니다. 매개변수와 반환값 측면에서 PHP 함수는 매개변수를 받아들이고 값을 반환합니다. JavaScript와 Python에도 비슷한 기능이 있지만 구문이 다릅니다. 범위 측면에서 PHP, JavaScript 및 Python의 함수는 모두 전역 또는 로컬 범위를 갖습니다. 전역 함수는 어디에서나 액세스할 수 있으며 로컬 함수는 선언 범위 내에서만 액세스할 수 있습니다.

PHP 함수의 성능은 얼마나 되나요? PHP 함수의 성능은 얼마나 되나요? Apr 18, 2024 pm 06:45 PM

다양한 PHP 기능의 성능은 애플리케이션 효율성에 매우 중요합니다. 성능이 더 좋은 함수에는 echo 및 print가 포함되는 반면 str_replace, array_merge 및 file_get_contents와 같은 함수는 성능이 느립니다. 예를 들어, str_replace 함수는 문자열을 바꾸는 데 사용되며 보통의 성능을 갖는 반면 sprintf 함수는 문자열 형식을 지정하는 데 사용됩니다. 성능 분석에 따르면 하나의 예제를 실행하는 데 0.05밀리초밖에 걸리지 않아 함수가 잘 수행된다는 것을 증명합니다. 따라서 기능을 현명하게 사용하면 더 빠르고 효율적인 응용 프로그램을 만들 수 있습니다.

See all articles