- PHP 教程
- PHP 简介
- PHP 安装
- PHP 语法
- PHP 变量
- PHP 5 echo/print 语句
- PHP EOF(heredoc) 使用说明
- PHP 5 数据类型
- PHP 5 常量
- PHP 字符串变量
- PHP 运算符
- PHP If…Else 语句
- PHP Switch 语句
- PHP 数组
- PHP 数组排序
- PHP 超级全局变量
- PHP While 循环
- PHP For 循环
- PHP 函数
- PHP魔术变量
- PHP 命名空间(namespace)
- PHP 表单
- PHP 表单验证
- PHP 表单 – 必需字段
- PHP 表单 – 验证邮件和URL
- PHP完整表单实例
- PHP $_GET 变量
- PHP $_POST 变量
- PHP 多维数组
- PHP date() 函数
- PHP include 和 require
- PHP 文件
- PHP 文件上传
- PHP Cookie
- PHP Session
- PHP 邮件
- PHP 安全 E-mail
- PHP 错误处理
- PHP 异常处理
- PHP 过滤器
- PHP 高级过滤器
- PHP JSON
- PHP 7 新特性
- PHP MySQL 简介
- PHP 连接 MySQL
- PHP MySQL 创建数据库
- PHP MySQL 创建表
- PHP MySQL 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- PHP MySQL 读取数据
- PHP MySQL Where 子句
- PHP MySQL Order By 关键词
- PHP MySQL Update
- PHP MySQL Delete
- PHP 数据库 ODBC
- PHP XML Expat 解析器
- PHP XML DOM
- PHP XML SimpleXML
- AJAX 简介
- PHP – AJAX 与 PHP
- PHP 实例 AJAX 与 MySQL
- PHP 实例 AJAX 与 XML
- PHP 实例 AJAX 实时搜索
- PHP 实例 AJAX RSS 阅读器
- PHP 实例 AJAX 投票
- PHP 5 Array 函数
- PHP 5 Calendar 函数
- PHP cURL 函数
- PHP 5 Date/Time 函数
- PHP 5 Directory 函数
- PHP Error 和 Logging 函数
- PHP 5 Filesystem 函数
- PHP Filter 函数
- PHP FTP 函数
- PHP HTTP 函数
- PHP Libxml 函数
- PHP Mail 函数
- PHP 5 Math 函数
- PHP Misc. 函数
- PHP 5 MySQLi 函数
- PHP PDO
- PHP 5 SimpleXML 函数
- PHP 5 String 函数
- PHP XML 函数
- PHP Zip File 函数
- PHP 5 Timezones
- PHP 图像处理
- PHP RESTful
- PHP 正则表达式(PCRE)
- PHP 可用的函数
- PDOStatement::setFetchMode
- PHP preg_split() 函数
- PHP var_dump() 函数
- PHP asort() 函数
- PHP ksort() 函数
- PHP arsort() 函数
- PHP krsort() 函数
- PHP array_replace_recursive() 函数
- PHP array_column() 函数
- PHP curl_version函数
- PHP date() 函数
- PHP imagecolortransparent – 将某个颜色定义为透明色
- PHP 7 移除的 SAPI
- PHP 标量类型与返回值类型声明
- PHP NULL 合并运算符
- PHP 太空船运算符(组合比较符)
- PHP 常量数组
- PHP 匿名类
- PHP Closure::call()
- PHP 过滤 unserialize()
- PHP IntlChar()
- PHP CSPRNG
- PHP 7 异常
- PHP 7 use 语句
- PHP 7 错误处理
- PHP intdiv() 函数
- PHP 7 Session 选项
- PHP 7 废弃特性
- PHP 7 移除的扩展
- PHP parse_ini_file() 函数
- PHP mysqli_connect_errno() 函数
- PHP array() 函数
- PHP array_change_key_case() 函数
- PHP array_chunk() 函数
- PHP array_combine() 函数
- PHP array_count_values() 函数
- PHP array_diff() 函数
- PHP array_diff_assoc() 函数
- PHP array_diff_key() 函数
- PHP array_diff_uassoc() 函数
- PHP array_diff_ukey() 函数
- PHP array_fill() 函数
- PHP array_fill_keys() 函数
- PHP array_filter() 函数
- PHP array_flip() 函数
- PHP array_intersect() 函数
- PHP array_intersect_assoc() 函数
- PHP array_intersect_key() 函数
- PHP array_intersect_uassoc() 函数
- PHP array_intersect_ukey() 函数
- PHP array_key_exists() 函数
- PHP array_keys() 函数
- PHP array_map() 函数
- PHP array_merge() 函数
- PHP array_merge_recursive() 函数
- PHP array_multisort() 函数
- PHP array_pad() 函数
- PHP array_pop() 函数
- PHP array_product() 函数
- PHP array_push() 函数
- PHP array_rand() 函数
- PHP array_reduce() 函数
- PHP array_replace() 函数
- PHP array_reverse() 函数
- PHP array_search() 函数
- PHP array_shift() 函数
- PHP array_slice() 函数
- PHP array_splice() 函数
- PHP array_sum() 函数
- PHP array_udiff() 函数
- PHP array_udiff_assoc() 函数
- PHP array_udiff_uassoc() 函数
- PHP array_uintersect() 函数
- PHP array_uintersect_assoc() 函数
- PHP array_uintersect_uassoc() 函数
- PHP array_unique() 函数
- PHP array_unshift() 函数
- PHP array_values() 函数
- PHP array_walk() 函数
- PHP array_walk_recursive() 函数
- PHP compact() 函数
- PHP count() 函数
- PHP current() 函数
- PHP each() 函数
- PHP end() 函数
- PHP extract() 函数
- PHP in_array() 函数
- PHP key() 函数
- PHP list() 函数
- PHP natcasesort() 函数
- PHP natsort() 函数
- PHP next() 函数
- PHP pos() 函数
- PHP prev() 函数
- PHP range() 函数
- PHP reset() 函数
- PHP rsort() 函数
- PHP shuffle() 函数
- PHP sizeof() 函数
- PHP sort() 函数
- PHP uasort() 函数
- PHP uksort() 函数
- PHP usort() 函数
- PHP cal_days_in_month() 函数
- PHP cal_from_jd() 函数
- PHP cal_info() 函数
- PHP cal_to_jd() 函数
- PHP easter_date() 函数
- PHP easter_days() 函数
- PHP frenchtojd() 函数
- PHP gregoriantojd() 函数
- PHP jddayofweek() 函数
- PHP jdmonthname() 函数
- PHP jdtofrench() 函数
- PHP jdtogregorian() 函数
- PHP jdtojewish() 函数
- PHP jdtojulian() 函数
- PHP jdtounix() 函数
- PHP jewishtojd() 函数
- PHP juliantojd() 函数
- PHP unixtojd() 函数
- PHP curl_init函数
- PHP curl_multi_add_handle函数
- PHP curl_close函数
- PHP curl_copy_handle函数
- PHP curl_errno函数
- PHP curl_error函数
- PHP curl_escape函数
- PHP curl_exec函数
- PHP curl_file_create函数
- PHP curl_getinfo函数
- PHP curl_multi_close函数
- PHP curl_multi_exec函数
- PHP curl_multi_getcontent函数
- PHP curl_multi_info_read函数
- PHP curl_multi_init函数
- PHP curl_multi_remove_handle函数
- PHP curl_multi_select函数
- PHP curl_multi_setopt函数
- PHP curl_multi_strerror函数
- PHP curl_pause函数
- PHP curl_reset函数
- PHP curl_setopt_array函数
- PHP curl_setopt函数
- PHP curl_share_close函数
- PHP curl_share_init函数
- PHP curl_share_setopt函数
- PHP curl_strerror函数
- PHP curl_unescape函数
- PHP checkdate() 函数
- PHP date_add() 函数
- PHP date_create_from_format() 函数
- PHP date_create() 函数
- PHP date_date_set() 函数
- PHP date_default_timezone_get() 函数
- PHP date_default_timezone_set() 函数
- PHP date_diff() 函数
- PHP date_format() 函数
- PHP date_get_last_errors() 函数
- PHP date_interval_format()/DateInterval::format() 函数
- PHP date_isodate_set() 函数
- PHP date_modify() 函数
- PHP date_offset_get() 函数
- PHP date_parse_from_format() 函数
- PHP date_parse() 函数
- PHP date_sub() 函数
- PHP date_sun_info() 函数
- PHP date_sunrise() 函数
- PHP date_sunset() 函数
- PHP date_time_set() 函数
- PHP date_timestamp_get() 函数
- PHP date_timestamp_set() 函数
- PHP date_timezone_get() 函数
- PHP date_timezone_set() 函数
- PHP getdate() 函数
- PHP gettimeofday() 函数
- PHP gmdate() 函数
- PHP gmmktime() 函数
- PHP gmstrftime() 函数
- PHP idate() 函数
- PHP localtime() 函数
- PHP microtime() 函数
- PHP mktime() 函数
- PHP strftime() 函数
- PHP strptime() 函数
- PHP strtotime() 函数
- PHP time() 函数
- PHP timezone_abbreviations_list() 函数
- PHP timezone_identifiers_list() 函数
- PHP timezone_location_get() 函数
- PHP timezone_name_from_abbr() 函数
- PHP timezone_name_get() 函数
- PHP timezone_offset_get() 函数
- PHP timezone_open() 函数
- PHP timezone_version_get() 函数
- PHP chdir() 函数
- PHP chroot() 函数
- PHP closedir() 函数
- PHP dir() 函数
- PHP getcwd() 函数
- PHP opendir() 函数
- PHP readdir() 函数
- PHP rewinddir() 函数
- PHP scandir() 函数
- PHP debug_backtrace() 函数
- PHP debug_print_backtrace() 函数
- PHP error_get_last() 函数
- PHP error_log() 函数
- PHP error_reporting() 函数
- PHP restore_error_handler() 函数
- PHP restore_exception_handler() 函数
- PHP set_error_handler() 函数
- PHP set_exception_handler() 函数
- PHP trigger_error() 函数
- PHP user_error() 函数
- PHP basename() 函数
- PHP chgrp() 函数
- PHP chmod() 函数
- PHP chown() 函数
- PHP clearstatcache() 函数
- PHP copy() 函数
- PHP dirname() 函数
- PHP disk_free_space() 函数
- PHP disk_total_space() 函数
- PHP diskfreespace() 函数
- PHP fclose() 函数
- PHP feof() 函数
- PHP fflush() 函数
- PHP fgetc() 函数
- PHP fgetcsv() 函数
- PHP fgets() 函数
- PHP fgetss() 函数
- PHP file() 函数
- PHP file_exists() 函数
- PHP file_get_contents() 函数
- PHP file_put_contents() 函数
- PHP fileatime() 函数
- PHP filectime() 函数
- PHP filegroup() 函数
- PHP fileinode() 函数
- PHP filemtime() 函数
- PHP fileowner() 函数
- PHP fileperms() 函数
- PHP filesize() 函数
- PHP filetype() 函数
- PHP flock() 函数
- PHP fnmatch() 函数
- PHP fopen() 函数
- PHP fpassthru() 函数
- PHP fputcsv() 函数
- PHP fputs() 函数
- PHP fread() 函数
- PHP fscanf() 函数
- PHP fseek() 函数
- PHP fstat() 函数
- PHP ftell() 函数
- PHP ftruncate() 函数
- PHP fwrite() 函数
- PHP glob() 函数
- PHP is_dir() 函数
- PHP is_executable() 函数
- PHP is_file() 函数
- PHP is_link() 函数
- PHP is_readable() 函数
- PHP is_uploaded_file() 函数
- PHP is_writable() 函数
- PHP is_writeable() 函数
- PHP link() 函数
- PHP linkinfo() 函数
- PHP lstat() 函数
- PHP mkdir() 函数
- PHP move_uploaded_file() 函数
- PHP pathinfo() 函数
- PHP pclose() 函数
- PHP popen() 函数
- PHP readfile() 函数
- PHP readlink() 函数
- PHP realpath() 函数
- PHP rename() 函数
- PHP rewind() 函数
- PHP rmdir() 函数
- PHP set_file_buffer() 函数
- PHP stat() 函数
- PHP symlink() 函数
- PHP tempnam() 函数
- PHP tmpfile() 函数
- PHP touch() 函数
- PHP umask() 函数
- PHP unlink() 函数
- PHP filter_has_var() 函数
- PHP filter_id() 函数
- PHP filter_input() 函数
- PHP filter_input_array() 函数
- PHP filter_list() 函数
- PHP filter_var_array() 函数
- PHP filter_var() 函数
- PHP FILTER_CALLBACK 过滤器
- PHP FILTER_SANITIZE_STRING 过滤器
- PHP FILTER_SANITIZE_STRIPPED 过滤器
- PHP FILTER_SANITIZE_ENCODED 过滤器
- PHP FILTER_SANITIZE_SPECIAL_CHARS 过滤器
- PHP FILTER_SANITIZE_EMAIL 过滤器
- PHP FILTER_SANITIZE_URL 过滤器
- PHP FILTER_SANITIZE_NUMBER_INT 过滤器
- PHP FILTER_SANITIZE_NUMBER_FLOAT 过滤器
- PHP FILTER_SANITIZE_MAGIC_QUOTES 过滤器
- PHP FILTER_UNSAFE_RAW 过滤器
- PHP FILTER_VALIDATE_INT 过滤器
- PHP FILTER_VALIDATE_BOOLEANT 过滤器
- PHP FILTER_VALIDATE_FLOAT 过滤器
- PHP FILTER_VALIDATE_REGEXP 过滤器
- PHP FILTER_VALIDATE_URL 过滤器
- PHP FILTER_VALIDATE_EMAIL 过滤器
- PHP FILTER_VALIDATE_IP 过滤器
- PHP ftp_alloc() 函数
- PHP ftp_cdup() 函数
- PHP ftp_chdir() 函数
- PHP ftp_chmod() 函数
- PHP ftp_close() 函数
- PHP ftp_connect() 函数
- PHP ftp_delete() 函数
- PHP ftp_exec() 函数
- PHP ftp_fget() 函数
- PHP ftp_fput() 函数
- PHP ftp_get_option() 函数
- PHP ftp_get() 函数
- PHP ftp_login() 函数
- PHP ftp_mdtm() 函数
- PHP ftp_mkdir() 函数
- PHP ftp_nb_continue() 函数
- PHP ftp_nb_fget() 函数
- PHP ftp_nb_fput() 函数
- PHP ftp_nb_get() 函数
- PHP ftp_nb_put() 函数
- PHP ftp_nlist() 函数
- PHP ftp_pasv() 函数
- PHP ftp_put() 函数
- PHP ftp_pwd() 函数
- PHP ftp_quit() 函数
- PHP ftp_raw() 函数
- PHP ftp_rawlist() 函数
- PHP ftp_rename() 函数
- PHP ftp_rmdir() 函数
- PHP ftp_set_option() 函数
- PHP ftp_site() 函数
- PHP ftp_size() 函数
- PHP ftp_ssl_connect() 函数
- PHP ftp_systype() 函数
- PHP header() 函数
- PHP headers_list() 函数
- PHP headers_sent() 函数
- PHP setcookie() 函数
- PHP setrawcookie() 函数
- PHP libxml_clear_errors() 函数
- PHP libxml_get_errors() 函数
- PHP libxml_get_last_error() 函数
- PHP libxml_use_internal_errors() 函数
- PHP mail() 函数
- PHP abs() 函数
- PHP acos() 函数
- PHP acosh() 函数
- PHP asin() 函数
- PHP asinh() 函数
- PHP atan() 函数
- PHP atan2() 函数
- PHP atanh() 函数
- PHP base_convert() 函数
- PHP bindec() 函数
- PHP ceil() 函数
- PHP cos() 函数
- PHP cosh() 函数
- PHP decbin() 函数
- PHP dechex() 函数
- PHP decoct() 函数
- PHP deg2rad() 函数
- PHP exp() 函数
- PHP expm1() 函数
- PHP floor() 函数
- PHP fmod() 函数
- PHP getrandmax() 函数
- PHP hexdec() 函数
- PHP hypot() 函数
- PHP is_finite() 函数
- PHP is_infinite() 函数
- PHP is_nan() 函数
- PHP lcg_value() 函数
- PHP log() 函数
- PHP log10() 函数
- PHP log1p() 函数
- PHP max() 函数
- PHP min() 函数
- PHP mt_getrandmax() 函数
- PHP mt_rand() 函数
- PHP mt_srand() 函数
- PHP octdec() 函数
- PHP pi() 函数
- PHP pow() 函数
- PHP rad2deg() 函数
- PHP rand() 函数
- PHP round() 函数
- PHP sin() 函数
- PHP sinh() 函数
- PHP sqrt() 函数
- PHP srand() 函数
- PHP tan() 函数
- PHP tanh() 函数
- PHP connection_aborted() 函数
- PHP connection_status() 函数
- PHP constant() 函数
- PHP define() 函数
- PHP defined() 函数
- PHP die() 函数
- PHP eval() 函数
- PHP exit() 函数
- PHP get_browser() 函数
- PHP highlight_file() 函数
- PHP highlight_string() 函数
- PHP ignore_user_abort() 函数
- PHP pack() 函数
- PHP strip_whitespace() 函数
- PHP show_source() 函数
- PHP sleep() 函数
- PHP time_nanosleep() 函数
- PHP time_sleep_until() 函数
- PHP uniqid() 函数
- PHP unpack() 函数
- PHP usleep() 函数
- PHP mysqli_affected_rows() 函数
- PHP mysqli_autocommit() 函数
- PHP mysqli_change_user() 函数
- PHP mysqli_character_set_name() 函数
- PHP mysqli_close() 函数
- PHP mysqli_commit() 函数
- PHP mysqli_connect_error() 函数
- PHP mysqli_connect() 函数
- PHP mysqli_data_seek() 函数
- PHP mysqli_debug() 函数
- PHP mysqli_dump_debug_info() 函数
- PHP mysqli_errno() 函数
- PHP mysqli_error_list() 函数
- PHP mysqli_error() 函数
- PHP mysqli_fetch_all() 函数
- PHP mysqli_fetch_array() 函数
- PHP mysqli_fetch_assoc() 函数
- PHP mysqli_fetch_field_direct() 函数
- PHP mysqli_fetch_field() 函数
- PHP mysqli_fetch_fields() 函数
- PHP mysqli_fetch_lengths() 函数
- PHP mysqli_fetch_object() 函数
- PHP mysqli_fetch_row() 函数
- PHP mysqli_field_count() 函数
- PHP mysqli_field_seek() 函数
- PHP mysqli_field_tell() 函数
- PHP mysqli_free_result() 函数
- PHP mysqli_get_charset() 函数
- PHP mysqli_get_client_info() 函数
- PHP mysqli_get_client_stats() 函数
- PHP mysqli_get_client_version() 函数
- PHP mysqli_get_connection_stats() 函数
- PHP mysqli_get_host_info() 函数
- PHP mysqli_get_proto_info() 函数
- PHP mysqli_get_server_info() 函数
- PHP mysqli_get_server_version() 函数
- PHP mysqli_info() 函数
- PHP mysqli_init() 函数
- PHP mysqli_insert_id() 函数
- PHP mysqli_kill() 函数
- PHP mysqli_more_results() 函数
- PHP mysqli_multi_query() 函数
- PHP mysqli_next_result() 函数
- PHP mysqli_num_fields() 函数
- PHP mysqli_num_rows() 函数
- PHP mysqli_options() 函数
- PHP mysqli_ping() 函数
- PHP mysqli_query() 函数
- PHP mysqli_real_connect() 函数
- PHP mysqli_real_escape_string() 函数
- PHP mysqli_refresh() 函数
- PHP mysqli_rollback() 函数
- PHP mysqli_select_db() 函数
- PHP mysqli_set_charset() 函数
- PHP mysqli_sqlstate() 函数
- PHP mysqli_ssl_set() 函数
- PHP mysqli_stat() 函数
- PHP mysqli_stmt_init() 函数
- PHP mysqli_thread_id() 函数
- PHP mysqli_thread_safe() 函数
- PHP PDO预定义常量
- PHP PDO连接连接管理
- PHP PDO 事务与自动提交
- PHP PDO 预处理语句与存储过程
- PHP PDO 错误与错误处理
- PHP PDO 大对象 (LOBs)
- PDO::beginTransaction
- PDO::commit
- PDO::__construct
- PDO::errorCode
- PDO::errorInfo
- PDO::exec
- PDO::getAttribute
- PDO::getAvailableDrivers
- PDO::inTransaction
- PDO::lastInsertId
- PDO::prepare
- PDO::query
- PDO::quote
- PDO::rollBack
- PDO::setAttribute
- PDOStatement::bindColumn
- PDOStatement::bindParam
- PDOStatement::bindValue
- PDOStatement::closeCursor
- PDOStatement::columnCount
- PDOStatement::debugDumpParams
- PDOStatement::errorCode
- PDOStatement::errorInfo
- PDOStatement::execute
- PDOStatement::fetch
- PDOStatement::fetchAll
- PDOStatement::fetchColumn
- PDOStatement::fetchObject
- PDOStatement::getAttribute
- PDOStatement::getColumnMeta
- PDOStatement::nextRowset
- PDOStatement::rowCount
- PDOStatement::setAttribute
- PHP __construct() 函数
- PHP addAttribute() 函数
- PHP addChild() 函数
- PHP asXML() 函数
- PHP attributes() 函数
- PHP children() 函数
- PHP count() 函数
- PHP getDocNamespaces() 函数
- PHP getName() 函数
- PHP getNamespaces() 函数
- PHP registerXPathNamespace() 函数
- PHP simplexml_import_dom() 函数
- PHP simplexml_load_file() 函数
- PHP simplexml_load_string() 函数
- PHP xpath() 函数
- PHP addcslashes() 函数
- PHP addslashes() 函数
- PHP bin2hex() 函数
- PHP chop() 函数
- PHP chr() 函数
- PHP chunk_split() 函数
- PHP convert_cyr_string() 函数
- PHP convert_uudecode() 函数
- PHP convert_uuencode() 函数
- PHP count_chars() 函数
- PHP crc32() 函数
- PHP crypt() 函数
- PHP echo() 函数
- PHP explode() 函数
- PHP fprintf() 函数
- PHP get_html_translation_table() 函数
- PHP hebrev() 函数
- PHP hebrevc() 函数
- PHP hex2bin() 函数
- PHP html_entity_decode() 函数
- PHP htmlentities() 函数
- PHP htmlspecialchars_decode() 函数
- PHP htmlspecialchars() 函数
- PHP implode() 函数
- PHP join() 函数
- PHP lcfirst() 函数
- PHP levenshtein() 函数
- PHP localeconv() 函数
- PHP ltrim() 函数
- PHP md5() 函数
- PHP md5_file() 函数
- PHP metaphone() 函数
- PHP money_format() 函数
- PHP nl_langinfo() 函数
- PHP nl2br() 函数
- PHP number_format() 函数
- PHP ord() 函数
- PHP parse_str() 函数
- PHP print() 函数
- PHP printf() 函数
- PHP quoted_printable_decode() 函数
- PHP quoted_printable_encode() 函数
- PHP quotemeta() 函数
- PHP rtrim() 函数
- PHP setlocale() 函数
- PHP sha1() 函数
- PHP sha1_file() 函数
- PHP similar_text() 函数
- PHP soundex() 函数
- PHP sprintf() 函数
- PHP sscanf() 函数
- PHP str_getcsv() 函数
- PHP str_ireplace() 函数
- PHP str_pad() 函数
- PHP str_repeat() 函数
- PHP str_replace() 函数
- PHP str_rot13() 函数
- PHP str_shuffle() 函数
- PHP str_split() 函数
- PHP str_word_count() 函数
- PHP strcasecmp() 函数
- PHP strchr() 函数
- PHP strcmp() 函数
- PHP strcoll() 函数
- PHP strcspn() 函数
- PHP strip_tags() 函数
- PHP stripcslashes() 函数
- PHP stripslashes() 函数
- PHP stripos() 函数
- PHP stristr() 函数
- PHP strlen() 函数
- PHP strnatcasecmp() 函数
- PHP strnatcmp() 函数
- PHP strncasecmp() 函数
- PHP strncmp() 函数
- PHP strpbrk() 函数
- PHP strpos() 函数
- PHP strrchr() 函数
- PHP strrev() 函数
- PHP strripos() 函数
- PHP strrpos() 函数
- PHP strspn() 函数
- PHP strstr() 函数
- PHP strtok() 函数
- PHP strtolower() 函数
- PHP strtoupper() 函数
- PHP strtr() 函数
- PHP substr() 函数
- PHP substr_compare() 函数
- PHP substr_count() 函数
- PHP substr_replace() 函数
- PHP trim() 函数
- PHP ucfirst() 函数
- PHP ucwords() 函数
- PHP vfprintf() 函数
- PHP vprintf() 函数
- PHP vsprintf() 函数
- PHP wordwrap() 函数
- PHP utf8_decode() 函数
- PHP utf8_encode() 函数
- PHP xml_error_string() 函数
- PHP xml_get_current_byte_index() 函数
- PHP xml_get_current_column_number() 函数
- PHP xml_get_current_line_number() 函数
- PHP xml_get_error_code() 函数
- PHP xml_parse() 函数
- PHP xml_parse_into_struct() 函数
- PHP xml_parser_create_ns() 函数
- PHP xml_parser_create() 函数
- PHP xml_parser_free() 函数
- PHP xml_parser_get_option() 函数
- PHP xml_parser_set_option() 函数
- PHP xml_set_character_data_handler() 函数
- PHP xml_set_default_handler() 函数
- PHP xml_set_element_handler() 函数
- PHP xml_set_external_entity_ref_handler() 函数
- PHP xml_set_notation_decl_handler() 函数
- PHP xml_set_object() 函数
- PHP xml_set_processing_instruction_handler() 函数
- PHP xml_set_unparsed_entity_decl_handler() 函数
- PHP zip_close() 函数
- PHP zip_entry_close() 函数
- PHP zip_entry_compressedsize() 函数
- PHP zip_entry_compressionmethod() 函数
- PHP zip_entry_filesize() 函数
- PHP zip_entry_name() 函数
- PHP zip_entry_open() 函数
- PHP zip_entry_read() 函数
- PHP zip_open() 函数
- PHP zip_read() 函数
- php getimagesize 函数 – 获取图像信息
- PHP gd_info – 取得当前安装的 GD 库的信息
- PHP getimagesizefromstring – 获取图片信息函数
- PHP image_type_to_extension – 获取图片后缀
- PHP image2wbmp – 输出WBMP图片
- PHP imageaffine – 返回经过仿射变换后的图像
- PHP imageaffinematrixconcat – 连接两个矩阵
- PHP imageaffinematrixget – 获取矩阵
- PHP imagealphablending – 设定图像的混色模式
- PHP imageantialias – 是否使用抗锯齿(antialias)功能
- PHP imagearc – 画椭圆弧
- PHP imagechar – 写出横向字符
- PHP imagecharup – 垂直地画一个字符
- PHP imagecolorallocate – 为一幅图像分配颜色
- PHP imagecolorallocatealpha – 为一幅图像分配颜色和透明度
- PHP imagecolorat – 取得某像素的颜色索引值
- PHP imagecolorclosest – 取得与指定的颜色最接近的颜色的索引值
- PHP imagecolorclosestalpha – 取得与指定的颜色加透明度最接近的颜色的索引
- PHP imagecolorclosesthwb – 取得与指定的颜色最接近的色度的黑白色的索引
- PHP imagesx()、imagesy() – 获取图像宽度与高度
- PHP preg_filter() 函数
- PHP preg_grep() 函数
- PHP preg_last_error() 函数
- PHP preg_match_all() 函数
- PHP preg_match() 函数
- PHP preg_quote() 函数
- PHP preg_replace_callback_array() 函数
- PHP preg_replace_callback() 函数
- PHP preg_replace() 函数
- PHP boolval() 函数
- PHP debug_zval_dump() 函数
- PHP floatval()、doubleval () 函数
- PHP empty() 函数
- PHP get_defined_vars() 函数
- PHP get_resource_type() 函数
- PHP gettype() 函数
- PHP import_request_variables() 函数
- PHP intval() 函数
- PHP is_array() 函数
- PHP is_bool() 函数
- PHP is_callable() 函数
- PHP is_float()、 is_double()、is_real()函数
- PHP is_int() 、is_integer()、is_long() 函数
- PHP is_iterable() 函数
- PHP is_null() 函数
- PHP is_numeric() 函数
- PHP is_object() 函数
- PHP is_resource() 函数
- PHP is_scalar() 函数
- PHP is_string() 函数
- PHP isset() 函数
- PHP print_r() 函数
- PHP serialize() 函数
- PHP settype() 函数
- PHP strval() 函数
- PHP unserialize() 函数
- PHP unset() 函数
- PHP var_export() 函数
- PHP 命名空间(namespace)
- PHP MySQL 创建表
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- PHP PDO
- PHP 5 Array 函数
- PHP 5 Calendar 函数
- PHP cURL 函数
- PHP 5 Date/Time 函数
- PHP 5 Directory 函数
- PHP Error 和 Logging 函数
- PHP 5 Filesystem 函数
- PHP Filter 函数
- PHP FTP 函数
- PHP HTTP 函数
- PHP Libxml 函数
- PHP Mail 函数
- PHP 5 Math 函数
- PHP Misc. 函数
- PHP 5 MySQLi 函数
- PHP 5 SimpleXML 函数
- PHP 5 String 函数
- PHP XML 函数
- PHP Zip File 函数
- PHP 面向对象
PHP 命名空间(namespace)
PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物。 不过在PHP当中还是有着相当重要的意义。
PHP 命名空间可以解决以下两类问题:
- 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
- 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
定义命名空间
默认情况下,所有常量、类和函数名都放在全局空间下,就和PHP支持命名空间之前一样。
命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。语法格式如下;
<?php // 定义代码在 'MyProject' 命名空间中 namespace MyProject; // ... 代码 ...
你也可以在同一个文件中定义不同的命名空间代码,如:
<?php namespace MyProject; const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } namespace AnotherProject; const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } ?>
不建议使用这种语法在单个文件中定义多个命名空间。建议使用下面的大括号形式的语法。
<?php namespace MyProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } namespace AnotherProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } ?>
将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。全局代码必须用一个不带名称的 namespace 语句加上大括号括起来,例如:
<?php namespace MyProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } namespace { // 全局代码 session_start(); $a = MyProject\connect(); echo MyProject\Connection::start(); } ?>
在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。
<?php declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码 namespace MyProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } namespace { // 全局代码 session_start(); $a = MyProject\connect(); echo MyProject\Connection::start(); } ?>
以下代码会出现语法错误:
<html> <?php namespace MyProject; // 命名空间前出现了“<html>” 会致命错误 - 命名空间必须是程序脚本的第一条语句 ?>
子命名空间
与目录和文件的关系很象,PHP 命名空间也允许指定层次化的命名空间的名称。因此,命名空间的名字可以使用分层次的方式定义:
<?php namespace MyProject\Sub\Level; //声明分层次的单个命名空间 const CONNECT_OK = 1; class Connection { /* ... */ } function Connect() { /* ... */ } ?>
上面的例子创建了常量 MyProject\Sub\Level\CONNECT_OK,类 MyProject\Sub\Level\Connection 和函数 MyProject\Sub\Level\Connect。
命名空间使用
PHP 命名空间中的类名可以通过三种方式引用:
非限定名称,或不包含前缀的类名称,例如 $a=new foo(); 或 foo::staticmethod();。如果当前命名空间是 currentnamespace,foo 将被解析为 currentnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,则 foo 会被解析为foo。 警告:如果命名空间中的函数或常量未定义,则该非限定的函数名称或常量名称会被解析为全局函数名称或常量名称。
限定名称,或包含前缀的名称,例如 $a = new subnamespace\foo(); 或 subnamespace\foo::staticmethod();。如果当前的命名空间是 currentnamespace,则 foo 会被解析为 currentnamespace\subnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,foo 会被解析为subnamespace\foo。
完全限定名称,或包含了全局前缀操作符的名称,例如, $a = new \currentnamespace\foo(); 或 \currentnamespace\foo::staticmethod();。在这种情况下,foo 总是被解析为代码中的文字名(literal name)currentnamespace\foo。
下面是一个使用这三种方式的实例:
file1.php 文件代码
<?php namespace Foo\Bar\subnamespace; const FOO = 1; function foo() {} class foo { static function staticmethod() {} } ?>
file2.php 文件代码
<?php namespace Foo\Bar; include 'file1.php'; const FOO = 2; function foo() {} class foo { static function staticmethod() {} } /* 非限定名称 */ foo(); // 解析为 Foo\Bar\foo resolves to function Foo\Bar\foo foo::staticmethod(); // 解析为类 Foo\Bar\foo的静态方法staticmethod。resolves to class Foo\Bar\foo, method staticmethod echo FOO; // resolves to constant Foo\Bar\FOO /* 限定名称 */ subnamespace\foo(); // 解析为函数 Foo\Bar\subnamespace\foo subnamespace\foo::staticmethod(); // 解析为类 Foo\Bar\subnamespace\foo, // 以及类的方法 staticmethod echo subnamespace\FOO; // 解析为常量 Foo\Bar\subnamespace\FOO /* 完全限定名称 */ \Foo\Bar\foo(); // 解析为函数 Foo\Bar\foo \Foo\Bar\foo::staticmethod(); // 解析为类 Foo\Bar\foo, 以及类的方法 staticmethod echo \Foo\Bar\FOO; // 解析为常量 Foo\Bar\FOO ?>
注意访问任意全局类、函数或常量,都可以使用完全限定名称,例如 \strlen() 或 \Exception 或 \INI_ALL。
在命名空间内部访问全局类、函数和常量:
<?php namespace Foo; function strlen() {} const INI_ALL = 3; class Exception {} $a = \strlen('hi'); // 调用全局函数strlen $b = \INI_ALL; // 访问全局常量 INI_ALL $c = new \Exception('error'); // 实例化全局类 Exception ?>
命名空间和动态语言特征
PHP 命名空间的实现受到其语言自身的动态特征的影响。因此,如果要将下面的代码转换到命名空间中,动态访问元素。
example1.php 文件代码:
<?php class classname { function __construct() { echo __METHOD__,"\n"; } } function funcname() { echo __FUNCTION__,"\n"; } const constname = "global"; $a = 'classname'; $obj = new $a; // prints classname::__construct $b = 'funcname'; $b(); // prints funcname echo constant('constname'), "\n"; // prints global ?>
必须使用完全限定名称(包括命名空间前缀的类名称)。注意因为在动态的类名称、函数名称或常量名称中,限定名称和完全限定名称没有区别,因此其前导的反斜杠是不必要的。
动态访问命名空间的元素
<?php namespace namespacename; class classname { function __construct() { echo __METHOD__,"\n"; } } function funcname() { echo __FUNCTION__,"\n"; } const constname = "namespaced"; include 'example1.php'; $a = 'classname'; $obj = new $a; // prints classname::__construct $b = 'funcname'; $b(); // prints funcname echo constant('constname'), "\n"; // prints global /* note that if using double quotes, "\\namespacename\\classname" must be used */ $a = '\namespacename\classname'; $obj = new $a; // prints namespacename\classname::__construct $a = 'namespacename\classname'; $obj = new $a; // also prints namespacename\classname::__construct $b = 'namespacename\funcname'; $b(); // prints namespacename\funcname $b = '\namespacename\funcname'; $b(); // also prints namespacename\funcname echo constant('\namespacename\constname'), "\n"; // prints namespaced echo constant('namespacename\constname'), "\n"; // also prints namespaced ?>
namespace关键字和__NAMESPACE__常量
PHP支持两种抽象的访问当前命名空间内部元素的方法,__NAMESPACE__ 魔术常量和namespace关键字。
常量__NAMESPACE__的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。
__NAMESPACE__ 示例, 在命名空间中的代码
<?php namespace MyProject; echo '"', __NAMESPACE__, '"'; // 输出 "MyProject" ?>
__NAMESPACE__ 示例,全局代码
<?php echo '"', __NAMESPACE__, '"'; // 输出 "" ?>
常量 __NAMESPACE__ 在动态创建名称时很有用,例如:
使用__NAMESPACE__动态创建名称
<?php namespace MyProject; function get($classname) { $a = __NAMESPACE__ . '\\' . $classname; return new $a; } ?>
关键字 namespace 可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的 self 操作符。
namespace操作符,命名空间中的代码
<?php namespace MyProject; use blah\blah as mine; // see "Using namespaces: importing/aliasing" blah\mine(); // calls function blah\blah\mine() namespace\blah\mine(); // calls function MyProject\blah\mine() namespace\func(); // calls function MyProject\func() namespace\sub\func(); // calls function MyProject\sub\func() namespace\cname::method(); // calls static method "method" of class MyProject\cname $a = new namespace\sub\cname(); // instantiates object of class MyProject\sub\cname $b = namespace\CONSTANT; // assigns value of constant MyProject\CONSTANT to $b ?>
namespace操作符, 全局代码
<?php namespace\func(); // calls function func() namespace\sub\func(); // calls function sub\func() namespace\cname::method(); // calls static method "method" of class cname $a = new namespace\sub\cname(); // instantiates object of class sub\cname $b = namespace\CONSTANT; // assigns value of constant CONSTANT to $b ?>
使用命名空间:别名/导入
PHP 命名空间支持 有两种使用别名或导入方式:为类名称使用别名,或为命名空间名称使用别名。
在PHP中,别名是通过操作符 use 来实现的. 下面是一个使用所有可能的三种导入方式的例子:
1、使用use操作符导入/使用别名
<?php namespace foo; use My\Full\Classname as Another; // 下面的例子与 use My\Full\NSname as NSname 相同 use My\Full\NSname; // 导入一个全局类 use \ArrayObject; $obj = new namespace\Another; // 实例化 foo\Another 对象 $obj = new Another; // 实例化 My\Full\Classname 对象 NSname\subns\func(); // 调用函数 My\Full\NSname\subns\func $a = new ArrayObject(array(1)); // 实例化 ArrayObject 对象 // 如果不使用 "use \ArrayObject" ,则实例化一个 foo\ArrayObject 对象 ?>
2、 一行中包含多个use语句
<?php use My\Full\Classname as Another, My\Full\NSname; $obj = new Another; // 实例化 My\Full\Classname 对象 NSname\subns\func(); // 调用函数 My\Full\NSname\subns\func ?>
导入操作是在编译执行的,但动态的类名称、函数名称或常量名称则不是。
3、导入和动态名称
<?php use My\Full\Classname as Another, My\Full\NSname; $obj = new Another; // 实例化一个 My\Full\Classname 对象 $a = 'Another'; $obj = new $a; // 实际化一个 Another 对象 ?>
另外,导入操作只影响非限定名称和限定名称。完全限定名称由于是确定的,故不受导入的影响。
4、导入和完全限定名称
<?php use My\Full\Classname as Another, My\Full\NSname; $obj = new Another; // instantiates object of class My\Full\Classname $obj = new \Another; // instantiates object of class Another $obj = new Another\thing; // instantiates object of class My\Full\Classname\thing $obj = new \Another\thing; // instantiates object of class Another\thing ?>
使用命名空间:后备全局函数/常量
在一个命名空间中,当 PHP 遇到一个非限定的类、函数或常量名称时,它使用不同的优先策略来解析该名称。类名称总是解析到当前命名空间中的名称。因此在访问系统内部或不包含在命名空间中的类名称时,必须使用完全限定名称,例如:
1、在命名空间中访问全局类
<?php namespace A\B\C; class Exception extends \Exception {} $a = new Exception('hi'); // $a 是类 A\B\C\Exception 的一个对象 $b = new \Exception('hi'); // $b 是类 Exception 的一个对象 $c = new ArrayObject; // 致命错误, 找不到 A\B\C\ArrayObject 类 ?>
对于函数和常量来说,如果当前命名空间中不存在该函数或常量,PHP 会退而使用全局空间中的函数或常量。
2、 命名空间中后备的全局函数/常量
<?php namespace A\B\C; const E_ERROR = 45; function strlen($str) { return \strlen($str) - 1; } echo E_ERROR, "\n"; // 输出 "45" echo INI_ALL, "\n"; // 输出 "7" - 使用全局常量 INI_ALL echo strlen('hi'), "\n"; // 输出 "1" if (is_array('hi')) { // 输出 "is not array" echo "is array\n"; } else { echo "is not array\n"; } ?>
全局空间
如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间,与 PHP 引入命名空间概念前一样。在名称前加上前缀 \ 表示该名称是全局空间中的名称,即使该名称位于其它的命名空间中时也是如此。
使用全局空间说明
<?php namespace A\B\C; /* 这个函数是 A\B\C\fopen */ function fopen() { /* ... */ $f = \fopen(...); // 调用全局的fopen函数 return $f; } ?>
命名空间的顺序
自从有了命名空间之后,最容易出错的该是使用类的时候,这个类的寻找路径是什么样的了。
<?php namespace A; use B\D, C\E as F; // 函数调用 foo(); // 首先尝试调用定义在命名空间"A"中的函数foo() // 再尝试调用全局函数 "foo" \foo(); // 调用全局空间函数 "foo" my\foo(); // 调用定义在命名空间"A\my"中函数 "foo" F(); // 首先尝试调用定义在命名空间"A"中的函数 "F" // 再尝试调用全局函数 "F" // 类引用 new B(); // 创建命名空间 "A" 中定义的类 "B" 的一个对象 // 如果未找到,则尝试自动装载类 "A\B" new D(); // 使用导入规则,创建命名空间 "B" 中定义的类 "D" 的一个对象 // 如果未找到,则尝试自动装载类 "B\D" new F(); // 使用导入规则,创建命名空间 "C" 中定义的类 "E" 的一个对象 // 如果未找到,则尝试自动装载类 "C\E" new \B(); // 创建定义在全局空间中的类 "B" 的一个对象 // 如果未发现,则尝试自动装载类 "B" new \D(); // 创建定义在全局空间中的类 "D" 的一个对象 // 如果未发现,则尝试自动装载类 "D" new \F(); // 创建定义在全局空间中的类 "F" 的一个对象 // 如果未发现,则尝试自动装载类 "F" // 调用另一个命名空间中的静态方法或命名空间函数 B\foo(); // 调用命名空间 "A\B" 中函数 "foo" B::foo(); // 调用命名空间 "A" 中定义的类 "B" 的 "foo" 方法 // 如果未找到类 "A\B" ,则尝试自动装载类 "A\B" D::foo(); // 使用导入规则,调用命名空间 "B" 中定义的类 "D" 的 "foo" 方法 // 如果类 "B\D" 未找到,则尝试自动装载类 "B\D" \B\foo(); // 调用命名空间 "B" 中的函数 "foo" \B::foo(); // 调用全局空间中的类 "B" 的 "foo" 方法 // 如果类 "B" 未找到,则尝试自动装载类 "B" // 当前命名空间中的静态方法或函数 A\B::foo(); // 调用命名空间 "A\A" 中定义的类 "B" 的 "foo" 方法 // 如果类 "A\A\B" 未找到,则尝试自动装载类 "A\A\B" \A\B::foo(); // 调用命名空间 "A\B" 中定义的类 "B" 的 "foo" 方法 // 如果类 "A\B" 未找到,则尝试自动装载类 "A\B" ?>
名称解析遵循下列规则:
- 对完全限定名称的函数,类和常量的调用在编译时解析。例如 new \A\B 解析为类 A\B。
- 所有的非限定名称和限定名称(非完全限定名称)根据当前的导入规则在编译时进行转换。例如,如果命名空间 A\B\C 被导入为 C,那么对 C\D\e() 的调用就会被转换为 A\B\C\D\e()。
- 在命名空间内部,所有的没有根据导入规则转换的限定名称均会在其前面加上当前的命名空间名称。例如,在命名空间 A\B 内部调用 C\D\e(),则 C\D\e() 会被转换为 A\B\C\D\e() 。
- 非限定类名根据当前的导入规则在编译时转换(用全名代替短的导入名称)。例如,如果命名空间 A\B\C 导入为C,则 new C() 被转换为 new A\B\C() 。
- 在命名空间内部(例如A\B),对非限定名称的函数调用是在运行时解析的。例如对函数 foo() 的调用是这样解析的:
- 在当前命名空间中查找名为 A\B\foo() 的函数
- 尝试查找并调用 全局(global) 空间中的函数 foo()。
- 在命名空间(例如A\B)内部对非限定名称或限定名称类(非完全限定名称)的调用是在运行时解析的。下面是调用 new C() 及 new D\E() 的解析过程: new C()的解析:
- 在当前命名空间中查找A\B\C类。
- 尝试自动装载类A\B\C。
- 在类名称前面加上当前命名空间名称变成:A\B\D\E,然后查找该类。
- 尝试自动装载类 A\B\D\E。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论