网站建设(一)PHP深入学习

为什么有些PHP脚本里没有?>作为结束符呢?
这个问题太经典了,简单说来,这是为了避免包含php文件时带来额外字符导致的错误,PHP规定如下:
1. 所有PHP文件必须使用Unix LF (linefeed)作为行的结束符。
2. 所有PHP文件必须以一个空白行作为结束。
3. 纯PHP代码文件必须省略最后的?>结束标签。
为啥这样规定咧,举个例子:

a.php:

<?php
    // some code 注意最末尾 ?> 之后有空白字符
?>    

b.php:

<?php
require "a.php";

header('xxxx');
?>

a.php末尾的空白字符也会被输出,然后就报错了,然而不带?> 就不会出现这个问题。

 

__DIR__ :当前内容写在哪个文件就显示这个文件目录

__FILE__ : 当前内容写在哪个文件就显示这个文件目录+文件名
 

define() 函数定义一个常量。

常量类似变量,不同之处在于:

  • 在设定以后,常量的值无法更改
  • 常量名不需要开头的美元符号($)
  • 作用域不影响对常量的访问
  • 常量值只能是字符串和数字

语法

define(name,value,case_insensitive)

参数描述
name必需。规定常量的名称。
value必需。规定常量的值。PHP7 支持数组,实例如下:
<?php
// PHP7+ 支持
define('ANIMALS', [
    'dog',
    'cat',
    'bird'
]);

echo ANIMALS[1]; // 输出 "cat"
?>
case_insensitive可选。规定常量的名称是否对大小写敏感。可能值:
  • TRUE - 大小写不敏感
  • FALSE - 默认。大小写敏感

技术细节

返回值:如果成功则返回 TRUE,如果失败则返回 FALSE。

 

实例

定义一个大小写不敏感的常量:

<?php
define("GREETING","Hello you! How are you today?",TRUE);
echo constant("greeting");
?>

HTTP报头主要是用来相互传递信息的。

 

include (或 require)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中。

包含文件很有用,如果您需要在网站的多张页面上引用相同的 PHP、HTML 或文本的话。

PHP include 和 require 语句

通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前)。

include 和 require 语句是相同的,除了错误处理方面:

  • require 会生成致命错误(E_COMPILE_ERROR)并停止脚本
  • include 只生成警告(E_WARNING),并且脚本会继续

::的用法

双冒号操作符即作用域限定操作符Scope Resolution Operator可以访问静态、const和类中重写的属性与方法。

好了,学完了,下面进入system.php里面,看看里面有什么?

at符号(@)在PHP中用作错误控制操作符。当表达式附加@符号时,将忽略该表达式可能生成的错误消息。如果启用了track_errors功能,则表达式生成的错误消息将保存在变量$ php_errormsg中。每个错误都会覆盖此变量。
注意:使用@是非常糟糕的编程习惯,因为它不会使错误消失,它只是隐藏它们,并且它使调试变得更糟,因为我们无法看到我们的代码实际上有什么问题。

 

php中的ini_set函数是php自带的用来修改设置php.ini配置文件的函数,用这个函数很方便,不用去手动修改php.ini文件,有时候我们也没有权限去修改php.ini文件,这时就用这个函数。

语法:ini_set("选项","值");该函数用时最好放到php的脚本最头部

比如:ini_set("max_execution_time", "180");//设置php的脚本超时时间为180秒

具体php选项可参考phpinfo文件的 Configuration PHP Core 部分

ini_get正好和ini_set相反,用来取php.ini文件里的环境变量的值.

语法:string ini_get (string varname );返回选项的值,如果选项的值为布尔型则返回为0或1

比如:echo ini_get('max_execution_time');//输出 30

如果想获取整个php.ini里的变量值,我们可以用ini_get的加强函数 ini_get_all()它以数组的形式返回整个php的环境变量。
 

isset查看一个变量是否已经被设置并且不为空(Determine if a variable is set and is not NULL)

empty查看一个变量是否为空 ""、0、"0"、NULL、FALSE、array()、$var($var是一个没有赋值的变量)

另外需要注意的是从PHP5.5开始,empty()只能支持变量,其他任何东西传递进来都将会导致介解析错误。

 

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。

  1. $_SERVER['HTTP_HOST']  请求头信息中的Host内容,获取当前域名。
  2. $_SERVER["SERVER_NAME"]  输出配置文件httpd.conf中的ServerName,一般情况下与HTTP_HOST值相同,但如果服务器端口不是默认的80端口,或者协议规范不是HTTP/1.1时,HTTP_HOST会包含这些信息,而SERVER_NAME不一定包含。(主要看配置文件的设置)。
  3. $_SERVER["HTTP_USER_AGENT"]  获取用户相关信息,包括用户浏览器、操作系统等信息。
  4. $_SERVER['HTTP_ACCEPT']  当前请求的ACCEPT头部信息。
  5. $_SERVER["HTTP_ACCEPT_LANGUAGE"]  这个值是由浏览器发送,表明用户默认的语言设置,后面的q值表示用户对该语言的喜好程度。
  6. $_SERVER["HTTP_ACCEPT_ENCODING"]  大部分的现代浏览器都支持gzip压缩,并会把这一信息报告给服务器。这时服务器就会压缩过的HTML发送给浏览器。这可以减少近80%的文件大小,以节省下载时间和带宽。
  7. $_SERVER["HTTP_COOKIE"]  浏览器的cookie信息。
  8. $_SERVER["HTTP_CONNECTION"]  当前请求的连接情况。
  9. $_SERVER["HTTP_UPGRADE_INSECURE_REQUESTS"]  表示浏览器可读懂服务器发过来的请求,
  10. $_SERVER["HTTP_CACHE_CONTROL"]  表示浏览器是否会缓存这个页面信息。
  11. $_SERVER["PATH"]  当前脚本所在文件系统。
  12. 等等

strpos() f函数查找字符串在另一字符串中第一次出现的位置(区分大小写)。

注释:strpos() 函数是区分大小写的。

注释:该函数是二进制安全的。

相关函数:

  • strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)
  • stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
  • strripos() -查找字符串在另一字符串中最后一次出现的位置(不区分大小写)

 

php ob_start 与 ob_end_flush() 是 php 的缓冲输出函数。

ob_start([string output_callback])- 打开输出缓冲区,所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面,可选得回调函数用于处理输出结果信息。 

ob_end_flush - 结束(发送)输出缓冲区的内容,关闭输出缓冲区。

php 输出东西,会保存在一个 php 维护的内存里,称为 buffer 也行,缓存也行,都是一个意思。然后当这个 buffer 满了,php 会自动往 web server 发送这些数据。

也就是说每次 echo,并不一定会输出东西,而是保存在 buffer 里。

ob_start() 的意思,可以理解为(但是实际上和我下面的说法有区别),这个 buffer 由

ob_ 系列函数来来控制,也就是,PHP 不会维护自己的 buffer,不会自动把buffer 的内容自动发送到 web server,直到你

ob_end() 或者类似的 ob 操作。

ob_函数一般用来捕获当前的输出,跟效率是没什么关系的。至于为什么捕获输出,原因很多,例如我捕捉输出,缓存到一个文件里,下次请求就可以直接读这个  cache 文件的内容作为输出了。

ob_gzhandler()目的是用在ob_start()中作回调函数,以方便将gz 编码的数据发送到支持压缩页面的浏览器.



    在php.ini中修改output_handler指令为:

output_handler = "ob_gzhandler"

 那么在数据返回给浏览器之前都会经过压缩,所有支持HTTP/1.1 的主流浏览器都支持。

require_once语句和require语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。

这时候进入init.php,看看里面有什么,注意system是包括在index中的,所以现在都是在index.php中执行的操作

HHVM (HipHop Virtual Machine)会将PHP代码转换成高级别的字节码(通常称为中间语言)。然后在运行时通过即时(JIT)编译器将这些字节码转换为x64的机器码。在这些方面,HHVM十分类似于C#的CLR和Java的JVM,一个 加快运行速度的编译器类型的。
 

die() 函数输出一条消息,并退出当前脚本。

该函数是 exit() 函数的别名。

microtime() 函数返回当前 Unix 时间戳的微秒数。
time() 函数返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数。

 

function_exists()

PHP function_exists() 函数用于检测函数是否被定义,检测的函数可以是 PHP 的内置函数,也可以是用户的自定义函数。如果被检测的函数存在则返回 TRUE ,否则返回 FALSE 。

PHP内置函数memory_get_usage()能返回当前分配给PHP脚本的内存量,单位是字节(byte)。在WEB实际开发中,这些函数非常有用,我们可以使用它来调试PHP代码性能。
memory_get_usage()函数返回内存使用量,memory_get_peak_usage()函数返回内存使用峰值,getrusage()返回CUP使用情况。但有一点请注意,在这些函数需要在Linux上运行。

 

定义和用法

rtrim() 函数移除字符串右侧的空白字符或其他预定义字符。

相关函数:

  • ltrim() - 移除字符串左侧的空白字符或其他预定义字符
  • trim() - 移除字符串两侧的空白字符或其他预定义字符

进入enterprise.php里面看看有什么。。。
可惜没有这段脚本。
 

get_magic_quotes_gpc函数介绍

取得 PHP 环境变数 magic_quotes_gpc 的值,属于 PHP 系统功能。

语法: long get_magic_quotes_gpc(void);

返回值: 长整数
get_magic_quotes_gpc函数是一个用来判断是否为用户提供的数据增加斜线了,这个在php.ini配置文件中哦
 

当 magic_quotes_gpc 打开时,所有的 ‘ (单引号), ” (双引号), (反斜线) and 空字符会自动转为含有反斜线的溢出字符。

magic_quotes_gpc设置是否自动为GPC(get,post,cookie)传来的数据中的'”加上反斜线。可以用get_magic_quotes_gpc()检测系统设置。
 

定义和用法

array_walk_recursive() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。该函数与 array_walk() 函数的不同在于可以操作更深的数组(一个数组中包含另一个数组)。

看看version.php里面的东西,今天把init里面的看完吧?
version没有,都没有。

SEO(Search Engine Optimization):汉译为搜索引擎优化。

date_default_timezone_set() 函数设置脚本中所有日期/时间函数使用的默认时区。

CMS是Content Management System的缩写,意为"内容管理系统"。 

好,接下来看





 

 

 

 


 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值