是否存在区别
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']));
=========================================