- 介绍
- 本地环境安装
- 安装 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 与 web 服务。下表为本教程开发环境配置:
开发环境 | 版本号 |
---|---|
PHP | 7.3.6 |
Nginx | 1.15.1 |
在正式开发之前,我们总是会面对这样一个问题:用哪款代码编辑器/IDE进行开发?
回答这个问题之前,我们需要知道即将用到的编辑器应该可以做什么。
下面是笔者罗列的一些编辑器应该具有的功能。
功能需求
- 代码高亮
- 代码补齐
- 代码格式化
- 语法检查
- 调试
IDE还是代码编辑器?
对于上面罗列的功能需求,各大 IDE 都能够满足,而之后要介绍的几款代码编辑器在使用插件后也能够胜任。
关于IDE
简单介绍一下 IDE,意为集成开发环境,具备很多代码开发功能,甚至集成了许多流行框架,开发者在开发相关项目时可以很高效流畅。但提供便捷的同时,IDE 通常也占据许多系统资源,在配置不那么高的系统中容易造成卡顿、崩溃等现象。
当前流行的PHP IDE有以下几种:
名称 | 操作系统 | 收费方式 |
---|---|---|
PHP Designer | windows | 免费 |
Eclipse PDT | Windows/macOS/Linux | 免费 |
PHPStorm | Windows/macOS/Linux | 订阅式收费 |
NetBeans | Windows | 免费 |
在审美方面,PHP Designer 属于简洁型,适合不喜欢配置的用户;PHPStorm 的主题配置大概可以开一个专栏,适合喜欢折腾的用户。其余两款中规中矩,但 Eclipse PDT 可以让 Java 用户感觉宾至如归,NetBeans 风格稍为老旧,但其直接支持多种 PHP 流行框架,开箱即用。
用户可以根据自己使用的平台、经济状况、审美以及项目规模来决定使用哪款 IDE。
关于代码编辑器
代码编辑器是什么呢?所有的 Windows 用户都用过记事本,记事本属于文本编辑器,你当然也可以用记事本写项目代码。但是,完全不推荐。
代码编辑器的作用应该是能够打开任何纯文本文件,并且能够简捷快速地输入代码,而且包含了很多功能,如语法高亮、自动缩进、自动完成、自动补全等功能。看下面的对比图,左边是 VS Code 写的 PHP 代码(极速数据API接口示例代码),右边是记事本的显示效果,你选哪种?
好的代码编辑器可以利用各种插件添加想要的功能,下表列出的几款代码编辑器都具有丰富的插件库,并且易于安装、免费。
名称 | 操作系统 |
---|---|
Notepad++ | windows |
Sublime Text 3 | Windows/macOS/Linux |
Visual Studio Code | Windows/macOS/Linux |
Atom | Windows/macOS/Linux |
四款编辑器都各有所长,也并不限于只使用一种。
Notepad++ 可以很快地打开大文件纯文本,笔者通常拿它看一些配置文件和单个的大文件,由于启动速度极快,它经常也作为一个临时的记事本存在,查找与替换功能界面类似于记事本,同样支持代码高亮等功能,如果愿意折腾,你也可以定制属于自己的颜色主题。与其余三款不同的是,Notepad++ 还支持宏录制、自定义语言格式等。
Sublime Text 是许多开发者喜爱的一款代码编辑器,整体界面优雅、简洁,在各种代码编辑器的测评中一定有它的身影。配合各种插件,可以深度定制你自己的代码编辑器,同时 Sublime 自带终端,在配置好环境后,可直接在编辑器内运行相关代码。并且 Sublime 支持窗口切分,可以将一个窗口最多切分为 4 个窗口,这对于需要同时查看多个文件来说很有用处。Sublime 还可以做更多的事,你可以做各种尝试,创造更多的可能。
VS Code 是微软开发的一款开源、免费的跨平台代码编辑器,2015年发布,界面同样简洁、优雅,几乎所有 Sublime 能做的它都能做(并不是全部,Sublime打开大文件的速度要快于VS Code,更加轻量化),比 Sublime 的优势是用户体验更佳。VS Code 的插件在安装前可以看到其详细说明,Sublime 的插件只有在安装之后才可能跳出说明文档。并且 sublime 下载某些插件时可能需要“翻墙”,VS Code 对国内用户非常友好。
Atom 由 GitHub 在2014年首次公开发布,并开放源代码,拥有丰富的插件库与主题,由于功能的强大型,有时也可以作为 IDE 使用(在一定程度上需要占用更多的系统资源),被它的开发者称为“21世纪的‘黑客’文本编辑器”,大部分功能与 VS Code 相似。
总体来说,就轻量级与便携性,Notepad++ > Sublime Text > VS Code > Atom(大于号表示“优于”);就用户体验(包括UI),VS Code > Sublime Text >= Notepad++ > Atom;就功能,Atom >= VS Code > Sublime Text >= Notepad++。以上排名仅为个人体验,用户可根据自己喜好选择合适的编辑器。
未来也许会出一篇代码编辑器插件选择与配置的相关教程,请持续关注我们。
由于笔者用的主力代码编辑器是 VS Code,这里说一说 VS Code 为笔者平时的编程工作带来哪些方便。
拿我们的教程为例,笔者经常需要写一些示例代码,然后需要运行结果,有时候文件目录很深,每次运行一个文件都需要打开命令行工具、进入该目录、然后执行。但 VS Code 可以做到直接在资源管理器选择文件夹,选择使用 VS Code 打开,需要运行某个文件就可以使用快捷键打开终端工具运行,如下图所示:
配合Code Runner
插件,甚至不需要输入指令,如下图:
如何选择
那么我们该选择使用 IDE 还是代码编辑器呢?
答案是根据项目规模。
当前跟着教程进行初步的 PHP 学习,不涉及相关框架或者大型项目的开发,使用代码编辑器足矣,可以快速打开运行我们的项目,尤其是需要同时开启多个应用时,代码编辑器可以为系统资源让路。
而进行大型的、拥有严格开发规范的项目开发时,应该选择 PHP IDE 进行沉浸式开发,保证逻辑清晰,并能够顺畅地进行调试。