- 介绍
- 本地环境安装
- 安装 WNMP 环境
- 代码编辑器选择
- 语法
- 变量与常量
- 常见输出函数
- 数据类型之四种标量类型
- 数据类型之三种复合类型
- 数据类型之两种特殊类型
- Operators:运算符
- 流程控制:条件判断语句
- 流程控制:循环语句
- 流程控制:中止语句
- 函数
- 类和对象:基本概念
- 类和对象:类结构
- 类和对象:面向对象
- 类和对象:三种特殊类
- 类和对象
- 类和对象:Trait
- 类和对象:魔术方法
- 命名空间
- 【实战】PHP表单
-
String
- addcslashes()
- addslashes()
- bin2hex()
- chop()
- chr()
- chunk_split()
- convert_cyr_string()
- convert_uudecode()
- convert_uuencode()
- count_chars()
- crc32()
- crypt()
- echo
- explode()
- fprintf()
- get_html_translation_table()
- hebrev()
- hebrevc()
- hex2bin()
- htmlentities()
- htmlspecialchars()
- htmlspecialchars_decode()
- html_entity_decode()
- implode()
- join()
- lcfirst()
- levenshtein()
- localeconv()
- ltrim()
- md5()
- md5_file()
- metaphone()
- money_format()
- nl2br()
- nl_langinfo()
- number_format()
- ord()
- parse_str()
- printf
- quoted_printable_decode()
- quoted_printable_encode()
- quotemeta()
- rtrim()
- setlocale()
- sha1()
- sha1_file()
- similar_text()
- soundex()
- sprintf()
- sscanf()
- strcasecmp()
- strchr()
- strcmp()
- strcoll()
- strcspn()
- stripcslashes()
- stripos()
- stripslashes()
- strip_tags()
- stristr()
- strlen()
- strnatcasecmp()
- strnatcmp()
- strncasecmp()
- strncmp()
- strpbrk()
- strpos()
- strrchr()
- strrev()
- strripos()
- strrpos()
- strspn()
- strstr()
- strtok()
- strtolower()
- strtoupper()
- strtr()
- str_getcsv()
- str_ireplace()
- str_pad()
- str_repeat()
- str_replace()
- str_rot13()
- str_shuffle()
- str_split()
- str_word_count()
- substr()
- substr_compare()
- substr_count()
- substr_replace()
- trim()
- ucfirst()
- ucwords()
- vfprintf()
- vprintf()
- vsprintf()
- wordwrap()
-
Array
- array()
- array_change_key_case()
- array_chunk()
- array_column()
- array_combine()
- array_count_values()
- array_diff()
- array_diff_assoc()
- array_diff_key()
- array_diff_uassoc()
- array_diff_ukey()
- array_fill()
- array_fill_keys()
- array_filter()
- array_flip()
- array_intersect()
- array_intersect_assoc()
- array_intersect_key()
- array_intersect_uassoc()
- array_intersect_ukey()
- array_keys()
- array_key_exists()
- array_key_first()
- array_key_last()
- array_map()
- array_merge()
- array_merge_recursive()
- array_multisort()
- array_pad()
- array_pop()
- array_product()
- array_push()
- array_rand()
- array_reduce()
- array_replace()
- array_replace_recursive()
- array_reverse()
- array_search()
- array_shift()
- array_slice()
- array_splice()
- array_sum()
- array_udiff()
- array_udiff_assoc()
- array_udiff_uassoc()
- array_uintersect()
- array_uintersect_assoc()
- array_uintersect_uassoc()
- array_unique()
- array_unshift()
- array_values()
- array_walk()
- array_walk_recursive()
- arsort()
- asort()
- compact()
- count()
- current()
- each()
- end()
- extract()
- in_array()
- key()
- key_exists()
- krsort()
- ksort()
- list()
- natcasesort()
- natsort()
- next()
- pos()
- prev()
- range()
- reset()
- rsort()
- shuffle()
- sizeof()
- sort()
- uasort()
- uksort()
- usort()
-
File
- basename()
- chgrp()
- chmod()
- chown()
- clearstatcache()
- copy()
- dirname()
- diskfreespace()
- disk_free_space()
- disk_total_space()
- fclose()
- feof()
- fflush()
- fgetc()
- fgetcsv()
- fgets()
- fgetss()
- file()
- fileatime()
- filectime()
- filegroup()
- fileinode()
- filemtime()
- fileowner()
- fileperms()
- filesize()
- filetype()
- file_exists()
- file_get_contents()
- file_put_contents()
- flock()
- fnmatch()
- fopen()
- fpassthru()
- fputcsv()
- fputs()
- fread()
- fscanf()
- fseek()
- fstat()
- ftell()
- ftruncate()
- fwrite()
- glob()
- is_dir()
- is_executable()
- is_file()
- is_link()
- is_readable()
- is_uploaded_file()
- is_writable()
- is_writeable()
- lchgrp()
- lchown()
- link()
- linkinfo()
- lstat()
- mkdir()
- move_uploaded_file()
- parse_ini_file()
- parse_ini_string()
- pathinfo()
- pclose()
- popen()
- readfile()
- readlink()
- realpath()
- realpath_cache_get()
- realpath_cache_size()
- rename()
- rewind()
- rmdir()
- set_file_buffer()
- stat()
- symlink()
- tempnam()
- tmpfile()
- touch()
- umask()
- unlink()
-
Datetime
- checkdate()
- date()
- date_add()
- date_create()
- date_create_from_format()
- date_date_set()
- date_default_timezone_get()
- date_default_timezone_set()
- date_diff()
- date_format()
- date_get_last_errors()
- date_interval_create_from_date
- date_interval_format()
- date_isodate_set()
- date_modify()
- date_offset_get()
- date_parse()
- date_parse_from_format()
- date_sub()
- date_sunrise()
- date_sunset()
- date_sun_info()
- date_timestamp_get()
- date_timestamp_set()
- date_timezone_get()
- date_timezone_set()
- date_time_set()
- getdate()
- gettimeofday()
- gmdate()
- gmmktime()
- gmstrftime()
- idate()
- localtime()
- microtime()
- mktime()
- strftime()
- strptime()
- strtotime()
- time()
- timezone_abbreviations_list()
- timezone_identifiers_list()
- timezone_location_get()
- timezone_name_from_abbr()
- timezone_name_get()
- timezone_offset_get()
- timezone_open()
- timezone_transitions_get()
- timezone_version_get()
-
Filter
-
HTTP
-
cURL
- curl_close()
- curl_copy_handle()
- curl_errno()
- curl_error()
- curl_escape()
- curl_exec()
- curl_file_create()
- curl_getinfo()
- curl_init()
- curl_multi_add_handle()
- curl_multi_close()
- curl_multi_errno()
- curl_multi_exec()
- curl_multi_getcontent()
- curl_multi_info_read()
- curl_multi_init()
- curl_multi_remove_handle()
- curl_multi_select()
- curl_multi_setopt()
- curl_multi_strerror()
- curl_pause()
- curl_reset()
- curl_setopt()
- curl_setopt_array()
- curl_share_close()
- curl_share_errno()
- curl_share_init()
- curl_share_setopt()
- curl_share_strerror()
- curl_strerror()
- curl_unescape()
- curl_version()
-
PDO
-
PDOStatement
类和对象:基本概念
在前面的章节中我们学习了 PHP 的基础知识:语法、常量与变量、数据类型、运算符、流程控制和函数,这里做一次简要的复习:
- 服务器通过
<?php ?>
识别 PHP 文件 - 数据类型有九种:
boolean
、string
、int
、float
、array
、object
、callable
、resource
、null
- 常量与变量都有数据类型,变量使用美元符
$
声明 - 运算符将常量/变量进行连接,构成表达式
- 条件语句、循环和中止语句控制脚本的运行顺序,即流程控制,包括:
if
、if...else
、if...elseif...else
、switch
while
、do-while
、for
、foreach
break
、continue
、return
- 函数是某一特定功能的实现,使用关键字
function
声明
复习完毕。
我们可以写一些简单功能的代码了。例如一个简单的用户注册功能,你需要接收用户注册的信息,然后连接数据库、建表、保存数据,很简单。但是,你可能还要写用户登录功能,接收的信息几乎一样,同样是连接数据库,然后进行数据库操作。多么相似!再复杂一点,你的用户可以发表评论,等等。
你可能需要写许多代码,有时候还需要添加一些功能,用户与用户之间也有不同......听起来就很手忙脚乱对吗?并且代码难以组织与维护。那么这时候你需要使用类和对象。
如果说对象是现实世界客观事物的一种抽象表达,那么类就是对象的抽象。虽然不太严谨,但是可以把类理解为“某个群体中具有相同属性和功能的成员的集合”,而对象就是这个集合中的成员。
打个比方,在图书馆里,每一本书都是一个对象,每个读者也是对象,图书管理员也是一个对象,但他们都是不同的。不同的书虽然也是不同的对象,但是它们都有许多相似的属性(比如说书籍都有作者、出版社、定价等),那么在图书馆这个“小世界”,“书”就是一个类。同样的,每个读者都是不同的对象,但他们也拥有着部分相同的属性(姓名、年龄、读者号等),于是“读者”也可以是一个类。
再打个比方,在植物世界里,花草树木都属于植物,那么植物就可以是一个类,而花草树木都是它的对象。再细致一点,花也可以是一个类,例如每朵花都有颜色、气味、作用等。从某种意义上说,类也可以理解为“分类”、“类别”,对象则是“类别”下的成员。
现实世界里每个事物都有其描述与功能,比如在下面这段描述中:
一部手机 A 有着黑色的外壳,壁纸是一个帅气的男明星,操作系统是 Android 的,可以用来打电话、发微信、刷微博。
我们可以剖析它的结构:
- 是什么
- 手机
- 有什么属性
- 外壳:黑色
- 壁纸:明星
- 操作系统:Android
- 有什么功能
- 打电话
- 发微信
- 刷微博
然后我们可以抽离这些属性和功能,“定制”一个关于“手机”的类,手机A就是“手机”类的一个对象。换一部手机B可能有不一样的外壳、壁纸和操作系统,但它同样可以打电话、发微信和刷微博,那么手机B也可以是“手机”类的一个对象。
三个例子你大概可以知道类和对象是什么了(如果不清楚,继续学习并实战会慢慢明白的),下面我们开始进入类和对象的语法讲解。
定义类
每个类的定义都以关键字class
开头,后跟类名和花括号。花括号内可能含有类属性和类方法,具体定义如下所示:
<?php
class className
{
public $property1;// 类属性
public $property2 = '带默认值的类属性';
const CONSTANT = '类常量使用关键字 const 定义';
public function classMethod()
{
// 函数,在类中称为 方法
}
}
上面的代码我们将在下一节进行详细讲解,定义一个类只需要以class
开头,后跟类名和花括号,花括号内是类代码即可。
创建类实例:对象
对象是类的一个实例,也可以说是类的一种具体表现。创建一个对象使用关键字new
,后跟类名和圆括号,例如:
$instance = new className();
在前面“函数”章节部分我们知道了函数具有可变性,类实例化也有类似的功能:如果new
关键字后跟的是一个与类名相同的字符串变量,后跟一对圆括号,如下所示,下面的代码功能与上面的代码一致:
$class = 'className';
$instance = new $class();
本节只讲解了类和对象的基础概念,设计类时应该根据不同的情况制定不同区分规则(分类),剖析事物的共同点,抽离出“类”的定义,并根据不同对象之间的关系进行类的设计。下一节我们开始学习类的结构。