所涉及到的系统函数有下面
1.魔术常量(__FILE__)
php里面有3类魔术,魔术常量,魔术方法,魔术引号。这个地方
魔术常量就下面的7个,和普通常量不同,魔术常量随着所处的位置而发生变化。
php里面的魔术常量有7个,分别是:
__LINE__当前文件行号
__FILE__文件的完整路径和文件名(4.0.2起总是包含一个绝对路径,此前的版本有时会有相对路径)
__DIR__文件所在目录,等价于dirname(__FILE__),末尾不包含斜杠,除非是根目录。(5.3.0新增)
__FUNCTION__所在的函数名称(4.3.0新增,返回方法名一律小写),php5以后区分大小写。
__CLASS__所在类的名称(4.3.0新增,返回类名一律小写)php5以后区分大小写。
__METHOD__类的方法名称(5.0.0新增)区分大小写
__NAMESPACE__空间名称(编译时候定义,大小写敏感) v5.3.0新增
魔术方法:
PHP把所有以__(两个下划线)开头的类方法当成魔术方法。所以当你定义类方法时,除了上述魔术方法,建议不要以 __为前缀
总共有14个魔术方法,分别是:
__construct :构造函数,初始化对象的时候会调用该方法,子类中存在构造函数时,不会阴式调用父类构造函数,显式调用parent::__construct()方法。为了向后兼容,如果没有__construct方法,则会寻找和类同名的函数。自5.3.3以后,命名空间里与类同名的方法或不再作为构造函数,不影响不在命名空间里面的类。
__destruct 析构函数 ,如果子类存在析构函数,不会自动调用父类的析构函数。脚本关闭的时候调用。
__call 当调用一个不可访问方法(如未定义,或者不可见)时,调用__call第一个参数是方法名,第二个参数是参数列表
__callStatic当试图中调用一个不可访问的静态方法时(如未定义,或者不可见)时【5.3.0新增】
__get 当获取未定义的属性时,会调用__get ,
__set 在给未定义的属性赋值时,会调用__set方法。 第一个参数是属性名,第二个参数是value
__isset 【5.1.0新增】
__unset 【5.1.0新增】
__sleep 序列化serialize ,如果该方法存在,先调用该方法,且返回要序列化的数组,如果返回NULL,NULL被序列化,且产生一个E_NOTICE错误。
__wakeup 反序列化,unserialize 会首先调用该方法。
__toString echo对象的时候,如果有该方法则调用该方法【5.2.0前只能用echo ,print,之后可以再任何字符串环境中运用】
__invoke 当尝试以调用函数的方式调用对象时,该方法将被调用【5.3.0及以上版本有效】
__set_state 当var_export被调用时,该方法会被调用【5.1.0起有效】
__clone 当对象复制的时候
魔术引号:
magic_quotes_gpc 【不推荐使用,5.3以后不推荐使用,5.4完全移除】。当它开启时,所有的(Get/Post/Cookie)gpc,中的单/双引号都会转义。
get_magic_quotes_gpc方法获取该配置状态。
没有set方法,也不能通过ini_set来设置,只能修改配置文件,或者.htaccess文件。
magic_quotes_runtime 【不推荐使用,5.3以后不推荐使用,5.4完全移除】。运行时,当写入文件,读取文件等操作会影响
set_magic_quotes_runtime 设置开关,【5.3已废弃】,建议用ini_set来设置。
get_magic_quotes_runtime 获取配置状态。
为什么magic_quotes_gpc不能通过ini_set 来设置,而magic_quotes_runtime可以这样设置?
注意到安装配置-->运行时配置-->where a configuration setting may be set
关于配置选项修改级别,有4个级别:
PHP_INI_USER 1 可以在程序里面通过ini_set 设置,也可以修改注册表(windows平台)
PHP_INI_PERDIR 6 只能在php.ini,.htaccess,和httpd.conf 修改
PHP_INI_SYSTEM 4 只能在php.ini,httpd.conf修改
PHP_INI_ALL 7 在所有地方都可以修改
哪些指令属于 PHP_INI_ALL
,PHP_INI_PERDIR
或 PHP_INI_SYSTEM
中的哪一个,请参考附录中的
附录--php.ini配置选项列表:
magic_quotes_gpc | "1" | PHP_INI_PERDIR |
magic_quotes_runtime | "0" | PHP_INI_ALL |
一目了然了。
php魔术 告一段落。
2.函数dirname
该函数属于文件系统相关扩展(FileSystem 函数)
dirname : 返回目录路径。
basename:返回路径中的文件名部分。如果文件有后缀,指定第二个参数也可以将后缀去掉。
pathinfo : 返回文件路径的信息,2个参数,文件路径,及要返回的值(dirname,basename,extension)
realpath : 返回规范化的路径,失败返回false
相似函数:
disk_free_space()可用空间
disk_total_space()总的空间大小
delete 同unlink 删除文件。
rmdir()删除目录,目录必须为空,且有权限操作,成功true,失败false,【5.0.0以后也可以用于某些url协议,支持上下文】
3.microtime 日历/时间相关函数 Date/Time函数
microtime()返回当前的时间戳和微秒数。【5.0.0后新增参数true/false】
time()返回当前的时间戳(不含微秒)
mktime()获取一个日期的时间戳。时间戳是一个长整形,包含了从 Unix 纪元(January 1 1970 00:00:00 GMT)到给定时间的秒数。参数依次是,时,分,秒,月,日,年,【最后一个参数是表示十分是夏时制,5.1后废弃】,注意,该方法必须至少有一个参数,否则5.1后会抛出 throws E_STRICT
notice. Use the time() function instead。如果参数非法,返回false,5.1之前返回-1.
gmmktime 获取GMT日期的unix的时间戳。和mktime()一样,只是返回的是格林威治标准时的时间戳
strtotime 将任何英文日期时间描述解析为 Unix 时间戳。
date(),格式化日期/时间,将给出的时间戳格式化成指定的格式。
spl_autoload_register 函数【注册一个自动加载】版本php5.1.2以上。
参数为callback类型。如果没有参数,自动注册autoload的默认实现函数spl_autoload()。
有参数的话,自动调用该参数对应的方法。
5.3之后支持命名空间。
callback类型,在文档语言参考--类型--文档使用的伪类型中
介绍了3中伪类型,分别是
mixed:可以介绍多种类型,但是不是所有的类型
number,integer或float
callback 有的函数需要传递函数作为参数,如call_user_function,
不仅仅函数名还可以是对象的方法,包括静态方法。数组第一个元素是类名,第二个元素是方法。
还可以调用create_function 创建一个匿名的回调函数。
spl_autoload_unregister 注销注册的自动加载方法。
spl_autoload_functions 获取已经注册的自动加载方法。
spl_autoload_extensions 修改默认实现函数 spl_autoload() 所使用的扩展名
void spl_autoload_call[$classname] 调用所有的已注册的自动加载函数来请求类。
strpos :查找字符串在第一个参数字符串中首次出现的位置 ,没找到返回false,,第三个参数代表查找的起始位置。
stripos : 查找字符串首次出现的位置(不区分大小写)
strripos :查找字符串在目标字符串中最后出现的位置(不区分大小写)
strrchr :查找指定字符在字符串中的最后一次出现
substr :截取字符串
strstr ,返回 haystack
字符串从 needle
第一次出现的位置开始到 haystack
结尾的字符串。
stristr 和strstr相比,不区分大小写。
is_file 函数:
FileSystem函数
判断文件是否为正常的文件。
realpath :返回规范化的绝对路径名.
basename:返回路径的文件名,如果有文件后缀,第二个参数指定后缀,可以去掉文件后缀
str_replace:将第三个参数中的所有第一个参数替换成第二个参数。
ltrim:去掉字符串开始位置的字符。默认空字符
相似:rtrime,右边的字符。
trime ,去除字符串两端的字符。
class_exists,interface_exists 【class/object函数】
is_dir 判断给定文件名是否是一个目录
相似的函数包括:
is_executable 判断给定文件名是否可执行,如果存在且可执行,返回true
is_file ,判断文件是否是正常文件,如果文件存在且为正常的文件则返回 TRUE
。
is_link,判断给定文件名是否为一个符号连接,如果文件存在且为符号链接返回true
is_readable 判断给定文件名是否可读,存在且可读返回true
is_uploaded_file 判断文件是否是通过 HTTP POST 上传的 文件是通过 HTTP POST 上传的则返回 TRUE
is_writable( is_writeable ) 判断给定的文件名是否可写 ,如果存在且可写返回true
这里涉及到超全局变量$_SERVER。
实际上超全局变量总共有9个,除了我们常见的$_GET,$_POST,$_REQUEST外
还包括$GLOBALS,$_SERVER,$_COOKIE,$_SESSION,$_FILES,$ENV
其中$_GET,$_POST,$_REQUEST是和浏览器请求相关的,
$_COOKIE是和cookie本地相关,$_SESSION和服务器session相关,
$_FILES和上传相关,$_SERVER和服务器相关,$ENV和环境相关。$GLOBALS,全局的变量。