php方法

php简单开启gzip压缩方法

php.ini文件 原设置如下

zlib.output_compression = Off; http://php.net/zlib.output-compression-level;zlib.output_compression_level = -1

修改后 output_compression_level可以设置为1-5之间均可

原文地址:http://www.niuguwen.cn/blog/35096.html

展开
收起

提高PHP性能的几个技巧

PHP博客分享关于在PHP编程语言中,如何提高效率问题,往往同样的功能,不一样的代码,出来的效率往往大不一样,博主总结以下几点分享给大家。

1.用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它 是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。

2.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。$row[’id’] 的速度是$row[id]的7倍。

3.echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。

4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。注销那些不用的变量尤其是大数组,以便释放内存。

5.尽量避免使用__get,__set,__autoload。

6.require_once()代价昂贵。include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。

7.如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。

8.函数代替正则表达式完成相同功能。str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。

9.如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。

10.用@屏蔽错误消息的做法非常低效,极其低效。

11.打开apache的mod_deflate模块,可以提高网页的浏览速度。

12.数据库连接当使用完毕时应关掉,不要用长连接。

13.错误消息代价昂贵。

14.在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。递增一个全局变量要比递增一个局部变量慢2倍。递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。

15.方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。派生类中的方法运行起来要快于在基类中定义的同样的方法。调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。

16.Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。

17.尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码 (OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。

18.当操作字符串并需要检验其长度是否满足某种要求时,你想当然地会使用strlen()函数。此函数执行起来相当快,因为它不做任何计算,只返回 在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步 骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset() 技巧加速执行你的代码。

19.当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或Java代 码并指望它们能立即变快,没用的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。后置递增实际上会产生一个临时变量, 这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为一个好主 意,因为并不是所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务提供商(ISPs)和服务器。

20.并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。并非要用类实现所有的数据结构,数组也很有用。

21.不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?当你需要时,你总能把代码分解成方法。

22.尽量采用大量的PHP内置函数。如果在代码中存在大量耗时的函数,你可以考虑用C扩展的方式实现它们。评估检验(profile)你的代码。检验器会告诉你,代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。

23.mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%。

24.在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用 file_get_contents,因为他的效率高得多!但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题;

25.尽量的少进行文件操作,虽然PHP的文件操作效率也不低的;

26.优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作(在update上,我被恶批过);

27.尽可能的使用PHP内部函数(但是我却为了找个PHP里面不存在的函数,浪费了本可以写出一个自定义函数的时间,经验问题啊!);

28.循环内部不要声明变量,尤其是大变量:对象(这好像不只是PHP里面要注意的问题吧?);多维数组尽量不要循环嵌套赋值;

29.在可以用PHP内部字符串操作函数的情况下,不要用正则表达式;

30.foreach效率更高,尽量用foreach代替while和for循环;

31.“用i+=1代替i=i+1。符合c/c++的习惯,效率还高”;

32.对global变量,应该用完就unset()掉;

一点PHP,每天一点分享

展开
收起

PHP的魔术方法使用

属性重载:

如果使用一个对象的未定义的属性,就构成属性重载。

属性重载,就是对一个“未定义”的属性,进行应对机制(处理办法)。

每一个操作,都会自动各自去调用一个预先定义好的“魔术方法”:

1:__set($name, $value):

当对一个对象的未定义的属性,进行“赋值”时,此时会自动调用类中预先定义好的魔术方法:__set();

该方法带2个参数:

$name : 表示该正在赋值的未定义的属性名;

$value : 表示该正在赋值的值;

实际上,之所以对一个对象的未定义的属性进行赋值,自然是希望该对象来保存该数据。

举例:

2: __get($name)方法

当对一个对象的未定义的属性,进行“取值”时,此时会自动调用类中预先定义好的魔术方法:__get();

该方法带1个参数:

$name : 表示该正在取值的未定义的属性名;

代码示例:

测试结果:

3:__isset()判断:

当对一个对象的未定义的属性,进行“isset()”判断时,此时会自动调用类中预先定义好的魔术方法:__isset();

该方法带1个参数:

$name : 表示该正在isset()的未定义的属性名;

测试代码结果:

4:__unset()销毁:

当对一个对象的未定义的属性,进行“unset()”操作时,此时会自动调用类中预先定义好的魔术方法:__unset();

该方法带1个参数:

$name : 表示该正在unset()的未定义的属性名;

展开
收起

PHP格式文件打开的方法有哪些?多种方法供你参考

本篇文章容大教育给大家分享一下PHP格式文件打开的方法有哪些,文章中会有详细的方法与代码列出,喜欢PHP开发技术的小伙伴可以随着小编一起来了解下。

php文件格式怎么打开?要搞清楚php文件用什么打开,首先我们来看php文件是什么文件,PHP是一个网页脚本,文件后缀名为.php,如下图:

但不同于html xml 标签语言,直接可以通过浏览器打开,php文件需要有PHP的运行环境才可以访问和打开,如果只是编辑PHP文件,只需要用:

php文件打开方式一:用记事本打开

右击.php文件,选择记事本打开,就可以看到文件代码啦!

php文件打开方式二:用Dreamweaver打开

Dreamweaver是网页编辑器,比较流行的网站开发工具,你可以直接把文件拖进去就可以打开php文件了

php文件打开方式三:Notepad++工具打开

也是代码编辑器,选择文件打开就行

php文件打开方式四:SublimeText工具打开

和上面方法一样,直接选择文件打开就行

除了记事本,其它代码编辑器工具都可以去php中文网php开发工具下载。

以上就是容大教育PHP在线学习小编给大家分享的PHP格式文件打开的方法,希望对小伙伴们有所帮助。

容大教育IT培训机构,能够为你提供良好的技术学习,能够更好地了解每个学习者的需求,根据每个学习者特定的需求为其配置最合适的资产组合,无疑更加符合学习者的需求。

展开
收起

php学习之函数的认识及相关细节

1.函数的介绍

说明:函数的作用在于对一个功能的封装,封装后在别的页码中引入并调用,可以节省代码量

语法:

function 函数名 ( [形参1][,形参2][,形参3][,形参4][,形参n]){

要封装的函数的代码;

[return 返回值];

}

2,函数的调用

说明:直接使用需要调用的函数的名即可

语法:

函数名([实参1][,实参2][,实参3][,实参4][,实参n]);

3.函数的相关细节

函数定义时的形参不是一个具体的数值,而是需要接收实参传过来的值,且形参必须是变量形参可以给默认值,且可以是多种数据类型实参就是要给函数传递数据的值。可以是具体的值。也可以是变量。实参必须和形参一一对应函数名遵循变量的定义规则。字母、下划线、数字且不能以数字开头函数名不能重复return返回值,如果写了就会返回当前要返回的值,如果没写默认返回一个1或者nullreturn可以返回多个值,即可以返回一个数组返回值必须使用一个变量到函数的调用者这个位置进行接收可以利用数组传递多个值函数的变量称为局部变量,不能在函数外使用

说明:

2.函数的调用机制

说明:

函数的调用者把实际的数据传递给函数的形参,这时候的形参只能在函数内使用函数在运行代码时会新建一个新的空间来运行函数内的代码运行代码后,如果有返回值,把结果返回给函数调用者,这时候运行的函数新的空间被销毁

图解:

引用传递

说明:有的函数可以直接使用全局变量。这时候是引用传递

案例:

未经允许不得转载:吾爱乐享 php学习之函数的认识及相关细节

展开
收起

php语法检查的方法有哪些?(代码示例)

php中语法检查是非常有必要的,如果不检查语法,则在发生错误时无法正常工作,如果同时执行语法检查,则可能不会发生该错误,本篇文章我们就来看一看php语法检查的方法。

我们可以使用lint检查

用lint静态检查。

静态是一种只检查语法描述方法而不执行程序的方法。

此时使用lint命令。

※php_check_syntax这个语法检查函数已经被废止,所以不能使用。

然后准备实际出现错误的php文件。

lint_test.php

<?phpecho "error"

它只是一个在屏幕上显示error的代码。

将lint_test.php移动到某个目录并发出以下命令。

php -l lint_test.php

执行结果

PHP Parse error: syntax error, unexpected end of file, expecting ',' or ';' in lint_test.php on line 2 Parse error: syntax error, unexpected end of file, expecting ',' or ';' in lint_test.php on line 2Errors parsing lint_test.php

syntax error=输出语法错误指示。

它还返回错误行数为line 2。

因为有unexpected end of file,是第2行没有“;”是原因。

那么,修改lint_test.php,再次执行lint命令。

<?phpecho "error";

执行结果为:

No syntax errors detected in lint_test.php

显示没有语法错误。

使用xdebug动态检查语法错误

首先,启用xdebug。

①从下面的官方站点下载xdebug,并记下下载的.dll文件所在的本地环境的路径。

https://xdebug.org/download.php

② 将以下内容添加到php.ini中。

zend_extension = ①中记录的路径

②重启Web服务器(Apache等)

这样就完成了设置。

使用xdebug检查错误

我们运行上述使用的lint_test.php。

lint_test.php

<?phpecho "error"

有一个错误,因为最后没有分号。

内容与执行lint时的内容相同,但附加了一些装饰以便于查看。

与lint的最大区别在于执行代码后出现的错误,因此可以说由于动态检查而出现错误。

展开
收起

互联网基础知识学习:php函数浅析笔记

本节我们一起学习下php的常见函数使用。

01php的EOF(heredoc) 概念及其使用说明

php EOF(heredoc)是一种在命令行shell(如sh、csh、bash、PowerShell等)和程序语言(像Perl、php、Python和Ruby)里定义一个字符串的方法。需要注意的是,EOF是一种字符串方法。

php中的EOF使用概述:

1. EOF使用完成后必须后接分号,否则编译通不过。2. EOF 可以用任意其它字符代替,只需保证结束标志与开始标志一致(比如我们可以用html、EOS等字符串来代替EOF,但是需要保持开始和结束使用的标志符一样,且不能在正文中重复,也就是开始使用了EOF,结束的时候必须使用EOF,但是正文中不能有EOF)。3. 结束标志必须顶格独自占一行并且必须从行首开始,前后不能衔接任何空白和字符。4. 开始标志可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。5.EOF 中是会解析 html 格式内容的,并且在双引号内的内容也有转义效果6. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当于q和qq的用法。使用示例如下图:

EOF格式示例

02php语言的数据类型

和其他语言一样,php语言的数据的数据类型也包含了字符串、整型、浮点型、数组、对象以及空值,类似于其他语言的对应数据类型,这些东西都是通用的,这里不再赘述。如下代码是先将字符串Hello world赋值给变量x,然后再将x变量的值变为空(null),最后使用var_dump输出x的结果(var_dump会先判断变量的类型和长度,然后输出结果。

<?php$x="Hello world!";$x=null;var_dump($x);?>

说明:var_dump() 方法,判断一个变量的类型与长度,并输出变量的数值,如果变量有值,则输出是变量的值,并返回数据类型。显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

03PHP 类型比较

尽管 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。

松散比较:使用两个等号 == 比较,只比较值,不比较类型。严格比较:用三个等号 === 比较,除了比较值,也比较类型。也就是说,如果一个定义为字符串123,另一个定义为整型变量123,那么在使用"=="来进行比较的时候,这两个值是为true的,而如果使用"==="来进行比较时,那么返回值就是false了。

示例代码如下图:

类型比较示例代码

04PHP 常量

常量值被定义后,在脚本的其他任何地方都不能被改变。

常量是一个简单值的标志符。该值在脚本中不能改变。一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。常量在整个脚本中都可以使用。

设置常量,常量是全局的,可以在对应的范围内使用。一般使用 define() 函数,函数语法如下:bool define (string $name , mixed $value [,bool $case_insensitive =false])

该函数有三个参数:

name:必选参数,就是你所定义的常量名称,即标志符。value:必选参数,定义的常量的值。case_insensitive :可选参数,为ture,表示该常量对大小写不敏感。默认是false(大小写敏感)。

上述就是本次为大家分享的内容,喜欢就点个赞吧,同时也希望大家多多点赞关注!

展开
收起

PHP丨PHP基础知识之PHP基础入门——函数「理论篇」

前两天讲过PHP基础知识的判断条件和流程控制,今天来讲讲PHP基础知识之PHP基础入门--函数!

一、函数的声明与使用

1、函数名是标识符之一,只能有数字字母下划线,开头不能是数字。

函数名的命名,须符合"小驼峰法则":myNameIsXiaoxi my_name_is_xiaoxi

函数名不区分大小写。func() Func() FUNC() 都可以

函数名不能与已有的函数名重复,不能与系统函数名重复。

2、function_exists("func1");用于检测函数是否已声明;

注意:传入的函数名,必须是字符串格式:返回结果为true/false。

二、PHP中变量的作用域

1、局部变量:声明在函数内部的变量,称为局部变量。只在函数内部能用,函数外加需使用,需在函数中使用return关键字返回。

2、全局变量:声明的函数外部的变量,称为全局变量。

3、函数中,使用变量,默认使用内部局部变量。如果,需在函数中使用全局变量,需要使用global关键字,将全局变量引用函数,才能使用。

函数中的变量名,如果与全局变量重复,global语句之上,为函数局部变量;global语句之下,为系统全局变量。

4、 $GLOBALS[]全局数组:

$GLOBALS[]数组,是PHP给我们内置的全局数组,可以直接给数组添加值,无论在函数内外声明,均可在任何地方直接使用。

$GLOBALS["a"] = 10; ---> echo $GLOBALS["a"];//任何位置直接使用

5、函数中使用全局变量,还有一种方式:通过给函数传参,可以在函数内部使用全局变量;

但是,传递以后的参数是函数的局部变量,内部改变,外部不会变。

除非,传递的参数是地址function func($a1,&$a2){} //函数内部修改a1,则全局a1不会变,函数内部修改a2,则全局a2会变。

如果函数的形参,出现了取址符号,则,调用函数时,实参必须是变量,而不能是字面量。

6、使用require与include包含不会影响作用域。

三、静态变量

1、静态变量,使用static关键字声明。static $num = 10;

2、静态变量的特点:

>>>静态变量在函数第一次加载的时候进行声明。

>>>函数使用完不会立即释放静态变量,静态变量在整个脚本执行过程中,只会声明一次。

>>>同一函数,多次调用,共享同一个静态变量。

四、函数的参数传递

1、在PHP中,涉及参数传递时:实参列表只能比形参多,

2、常规参数传递:function func($a){} func($a);

3、引用参数传递:function func(&$a){} func($a);

①通过&引用参数传递,函数内修改变量,函数外同步变化

②形参为引用参数,实参只能是变量,不能是字面量 func(10); ×

4、默认参数:function func($b,$a=10){} func(20);

//是$可以不传,默认为10;$b必须传递,否则使用时未定义报错。

如果参数中既有默认参数,也有非默认参数,那么默认参数列表

必须要在非默认参数列表后面,即调用的时候必须保证非默认列表的优先赋值。

5、可变参数列表:由于PHP实参可以比形参多,那么我们可以传递N个实参,并通过PHP内置函数取到对应参数。

var_dump(func_get_args());//取所有参数列表(数组)

var_dump(func_num_args());//返回参数的总个数相当于count(func_get_args());

var_dump(func_get_arg(0));//根据下标,返回每个参数

五、变量函数

1、将一个函数名,转为字符串后,赋给一个变量。这个变量,就是我们所说的变量函数,可以加()调用函数内容。

function func(){}--->$fun = "func";--->$func();

六、回调函数

1、使用变量函数,自定义回调函数

function func($func){$func();}--->function f(){}--->func("f");

2、使用call_user_func_array和call_user_func自定义回调函数;

两个函数的第一个参数,均为回调函数,表示执行当前回调。

不同点在于:call_user_func_array()第二个参数为数组,并将数组的每一个值赋给回调函数的参数列表,相当于JS中的apply();

而call_user_func,是将回调函数的参数列表,直接展开写到第2~多个参数中,相当于JS中的call();

eg:call_user_func_array("func",array(1,2,3));

--> func(1,2,3);

call_user_func("func",1,2,3); --> func(1,2,3);

七、匿名函数

由于变量函数,在调用时存在多种调用方(func()/$func();)

所以为了让函数的调用更为同一,才产生了匿名函数!!!

声明匿名函数,函数体后面的分号必不可少!

匿名函数本身也是变量,用var_dump();检测为Object类型

八、PHP闭包

在PHP中,子函数无法直接访问父函数的局部变量,必须使用User关键词向下传递!!!

文章收集与网络,辛苦收集转载请备注出处一只大脸猫博客!

PHP丨PHP基础知识之流程控制WHILE循环「理论篇」

PHP丨PHP基础知识之条件语IF判断「理论篇」

PHP丨PHP基础知识之条件语SWITCH判断「理论篇」

展开
收起

PHP类中成员方法

实例属性和静态属性

class 类名{

var $属性名1 = 值1; //定义实例属性,有初值

var $属性名2 ; //定义实例属性,无初值;

static $属性名3 = 值3; //定义静态属性,有初值

static $属性名4 ; //定义静态属性,无初值;

//其实,是静态属性,是在属性名前面加上“static”关键字

}

实例属性:

它是“隶属于”对象的属性;

每new(实例化)一个对象,则该对象上就具有了该实例属性。

使用形式:

$对象->实例属性名;

可见,实例属性,是通过对象来使用它;

静态属性:

它是“隶属于”该类本身——而不隶属于对象。

即使new很多个对象,也只有一个该属性——即只能保存一份数据;

使用形式:

类名::$静态属性名;

可见:静态属性,是通过类来使用它;

实例方法和静态方法

实例方法:

定义形式:

function 方法名(形参1,形参2,...) { ..... }

使用形式:

$对象->方法名(实参1,实参2,....);

实例方法也是“隶属于”对象;

不过,因为方法不是“容器”,不是“数据”,而是一段可执行的代码;

注意:多个不同的对象,调用一个共同的方法,也只是调用而已,并不像实例属性一样,区分“你的”还是“我的”

静态方法:

定义形式:

static function 方法名(形参1,形参2,...) { ..... }

使用形式:

类名::方法名(实参1,实参2,....);

静态方法也是“隶属于”类;

展开
收起

php必须掌握的常用函数总结

掌握知识点1,2在上一篇文章已经介绍过了,现在我们从第三个知识点来讲吧!

不仅仅是码农

1.Array 函数2.Calendar 函数3.cURL 函数4.Date 函数5.Directory 函数6.Error 函数7.Filesystem 函数8.Filter 函数9.FTP 函数10.HTTP 函数11.LibXML 函数12.Mail 函数13.Math 函数14.Misc 函数15.MySQLi 函数16.SimpleXML 函数17.String 函数18.XML Parser 函数19.Zip 函数

PHP cURL 函数

概述PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。PHP中使用cURL实现Get和Post请求的方法这些函数在PHP 4.0.2中被引入。需求为了使用PHP的cURL函数,你需要安装 libcurl包。PHP需要使用libcurl 7.0.2-beta 或者更高版本。在PHP 4.2.3 里使用cURL,你需要安装7.9.0或更高版本的libcurl。从PHP 4.3.0开始你需要安装7.9.0或更高版本的libcurl。从PHP 5.0.0开始你需要安装7.10.5或更高版本的libcurl。安装要使用PHP的cURL支持你必须在编译PHP时加上--with-curl[=DIR] 选项,DIR为包含lib和include的目录路径。在include目录中必须有一个名为curl,包含了easy.h和curl.h的文件夹。lib文件夹里应该有一个名为libcurl.a的文件。对于PHP 4.3.0你可以配置--with-curlwrappers 使cURL使用URL流。注意: Win32用户注意 要在Windows环境下使用这个模块,libeay32.dll和ssleay32.dll必须放到PATH环境变量包含的目录下。 不用cURL网站上的libcurl.dll。资源类型这个扩展定义了2中资源:cURL句柄和cURL批处理句柄。PHP cURL 函数以下包含了PHP cURL函数列表:

展开
收起