应用场景之 区别篇

是否存在区别
is_dir :存在文件夹,返回true
if_file :存在文件,返回true

file_exists  = is_dir + is_file 可以判断目录存在.和文件存在
 执行效率非常低 

类是否存在 class_exists()
方法是否存在function_exists(),存在就把时区传递过去,先设置一个时间时间,
然后从配置文件中取出配置文件的时间.赋值给他.
如果没有配置过,抛出异常,把刚才时区传递过去
if (function_exists('date_default_timezone_set'))
{
$timezone = 'UTC';
try {
$timezone = config('config', 'timezone');
}
catch (Exception $e){}
date_default_timezone_set($timezone);
}



PHP脚本文件在读到include()语句时,才将它包含的文件读取进来。这种方式,可以把程式执行时的流程简单化。

php.ini配置文件,开启错误信息显示 ,display_errors 修改为on
require(先加载)经常写在index.php文件最开头.Fatal致命错误,停止在这个地方,不再往下运行
incluce (后加载)在用到时加载,Warning警告错误,继续运行
_once后缀已加载的不加载




Constant 不变的,固定的,常量

定义常量
const与define的区别

在类中定义常量.使用const,(不可以在if中,不可以表达式(只能是静态标量),不能加true分大小写,速度快)
在类外面定义全局常量.使用define可以在if中,可以使用表达式,define('FOO', 'BAR', true);  加true不分大小写,编译速度慢,


php中的时间


var_dump(microtime(true));//浮点型+毫秒float(1458871513.87) 微小时间,加true=time()加上2为小数,(8百7十毫秒)
var_dump(time());//10位整形时间戳 int(1458871513) 

var_dump(microtime());//字符串类型 string(21) "0.53907900 1458871359"  以0开头的字符串类型,直接使用.表示1970年开始,还不到1秒

var_dump(date('Y-m-d H:i:s',62.8888)); //字符串类型 string(19) "1970-01-01 00:01:02"   1970年后1分钟,2秒 
var_dump(date('Y-m-d H:i:s',0999)); //字符串类型 string(19) "1970-01-01 00:00:00"  1970年后 0秒 //只要是0开头,表示没有时间 
var_dump(date('Y-m-d H:i:s',microtime())); // 字符串类型 string(19) "1970-01-01 00:00:00"   1970年后 0秒 //只要是0开头,表示没有时间 


mysql中的时间
datetime ,日期+时间
日期和时间的组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'

timestamp,还有20年到期,MySQL 4.1和5.1不支持

时间戳。范围是'1970-01-01 00:00:00'到2037年。





=========================


获取当前url地址,(去除主机地址外,从反斜杠开始到最后的那部分)

http://127.0.0.1/hello.php

如:$_SERVER['REQUEST_URI'] 获取到的是 /hello.php


在apache下
HTTP_X_REWRITE_URL的重写url.都是回到主机地址.所以都是空
REQUEST_URI请求的url,如果是仅仅有主机就是反斜杠(/),如果还有就是反斜杠到最后(/index.php)
当前URL:http://www.hujuntao.com/
当前URL:http://www.hujuntao.com/index.php




当前URL:http://www.hujuntao.com/
IIS环境下:
$_SERVER[‘REQUEST_URI’] = /index.php
$_SERVER[“HTTP_X_REWRITE_URL”] =/
apache环境下:
$_SERVER[‘REQUEST_URI’] = /
$_SERVER[“HTTP_X_REWRITE_URL”] =”


当前URL:http://www.hujuntao.com/index.php
IIS环境下:
$_SERVER[‘REQUEST_URI’] = /index.php
$_SERVER[“HTTP_X_REWRITE_URL”] =/index.php
apache环境下:
$_SERVER[‘REQUEST_URI’] = /index.php
$_SERVER[“HTTP_X_REWRITE_URL”] =”





获取url地址的值

query_string 请求的字符串.取出url中?问号后面的字符串(不包括?)
request_url 请求的事主机后面的值.(包括 /)
php_self 当前执行脚本的文件名.

http://localhost/aaa/ (打开aaa中的index.php)
$_SERVER['PHP_SELF']     = "/aaa/index.php";
http://localhost/aaa/?p=222 
$_SERVER['QUERY_STRING'] = "p=222";
$_SERVER['REQUEST_URI']  = "/aaa/?p=222";


获取主机地址

http://127.0.0.1/hello.php

http://localhost/hello.php
如:$_SERVER['HTTP_HOST'] 获取到的是 127.0.0.1和localhost

获取翻墙主机地址
$_SERVER['HTTP_X_FORWARDED_HOST']
获取当前主机地址
$_SERVER['HTTP_HOST'],获取结果包含了端口
获取当前服务名,获取结果不包含端口
$_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']=='80' ? '' : ':'.$_SERVER['SERVER_PORT'])
默认会输出httpd.conf中的servername的值


有别名的时候,虽然访问的url是别名.但是返回的还是ServerName的值


<virtualhost *>
ServerName mimiz.cn
ServerAlias www.mimiz.cn
</virtualhost>
客户端访问域名www.mimiz.cn
_SERVER["HTTP_HOST"] 输出 www.mimiz.cn
_SERVER["SERVER_NAME"] 输出 mimiz.cn


应尽量使用_SERVER["HTTP_HOST"] ,比较保险和可靠。



如果是公司局域网,或者翻墙访问,跳转的时候.需要获取(过去的老的,forwarded那个主机地址)否则永远都是中间那台服务器的地址.
如果存在老的地址,就使用.否则就使用http_host地址,如果也没有使用SERVER_NAME获取主机地址,拼接端口,如果是80拼接空,否则拼接端口


$host    = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']=='80' ? '' : ':'.$_SERVER['SERVER_PORT']));  


=========================================






        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值