由于ThinkPHP6.0中没有自带代码注释,所以想要获得代码提示需要手动添加注释

一、在Model.php(vendor\topthink\think-orm\src)中添加如下注释

/**
 * Class Model
 * @package think
 * @mixin Query
 * @method void onAfterRead(Model $model) static after_read事件定义
 * @method mixed onBeforeInsert(Model $model) static before_insert事件定义
 * @method void onAfterInsert(Model $model) static after_insert事件定义
 * @method mixed onBeforeUpdate(Model $model) static before_update事件定义
 * @method void onAfterUpdate(Model $model) static after_update事件定义
 * @method mixed onBeforeWrite(Model $model) static before_write事件定义
 * @method void onAfterWrite(Model $model) static after_write事件定义
 * @method mixed onBeforeDelete(Model $model) static before_write事件定义
 * @method void onAfterDelete(Model $model) static after_delete事件定义
 * @method void onBeforeRestore(Model $model) static before_restore事件定义
 * @method void onAfterRestore(Model $model) static after_restore事件定义
 * @method Query where(mixed $field, string $op = null, mixed $condition = null) static 查询条件
 * @method Query whereTime(string $field, string $op, mixed $range = null) static 查询日期和时间
 * @method Query whereBetweenTime(string $field, mixed $startTime, mixed $endTime) static 查询日期或者时间范围
 * @method Query whereBetweenTimeField(string $startField, string $endField) static 查询当前时间在两个时间字段范围
 * @method Query whereYear(string $field, string $year = 'this year') static 查询某年
 * @method Query whereMonth(string $field, string $month = 'this month') static 查询某月
 * @method Query whereDay(string $field, string $day = 'today') static 查询某日
 * @method Query whereRaw(string $where, array $bind = []) static 表达式查询
 * @method Query whereExp(string $field, string $condition, array $bind = []) static 字段表达式查询
 * @method Query when(mixed $condition, mixed $query, mixed $otherwise = null) static 条件查询
 * @method Query join(mixed $join, mixed $condition = null, string $type = 'INNER') static JOIN查询
 * @method Query view(mixed $join, mixed $field = null, mixed $on = null, string $type = 'INNER') static 视图查询
 * @method Query with(mixed $with) static 关联预载入
 * @method Query count(string $field) static Count统计查询
 * @method Query min(string $field) static Min统计查询
 * @method Query max(string $field) static Max统计查询
 * @method Query sum(string $field) static SUM统计查询
 * @method Query avg(string $field) static Avg统计查询
 * @method Query field(mixed $field, boolean $except = false) static 指定查询字段
 * @method Query fieldRaw(string $field, array $bind = []) static 指定查询字段
 * @method Query union(mixed $union, boolean $all = false) static UNION查询
 * @method Query limit(mixed $offset, integer $length = null) static 查询LIMIT
 * @method Query order(mixed $field, string $order = null) static 查询ORDER
 * @method Query orderRaw(string $field, array $bind = []) static 查询ORDER
 * @method Query cache(mixed $key = null, integer $expire = null) static 设置查询缓存
 * @method mixed value(string $field) static 获取某个字段的值
 * @method array column(string $field, string $key = '') static 获取某个列的值
 * @method Model find(mixed $data = null) static 查询单个记录 不存在返回Null
 * @method Model findOrEmpty(mixed $data = null) static 查询单个记录 不存在返回空模型
 * @method \think\model\Collection select(mixed $data = null) static 查询多个记录
 * @method Model withAttr(array $name, \Closure $closure) 动态定义获取器
 */

二、在DbManager.php(vendor\topthink\think-orm\src)中添加下列注释

/**
 * Class DbManager
 * @package think
 * @mixin BaseQuery
 * @mixin Query
 * @method \think\db\Query master() static 从主服务器读取数据
 * @method \think\db\Query readMaster(bool $all = false) static 后续从主服务器读取数据
 * @method \think\db\Query table(string $table) static 指定数据表(含前缀)
 * @method \think\db\Query name(string $name) static 指定数据表(不含前缀)
 * @method \think\db\Query where(mixed $field, string $op = null, mixed $condition = null) static 查询条件
 * @method \think\db\Query whereRaw(string $where, array $bind = []) static 表达式查询
 * @method \think\db\Query whereExp(string $field, string $condition, array $bind = []) static 字段表达式查询
 * @method \think\db\Query when(mixed $condition, mixed $query, mixed $otherwise = null) static 条件查询
 * @method \think\db\Query join(mixed $join, mixed $condition = null, string $type = 'INNER') static JOIN查询
 * @method \think\db\Query view(mixed $join, mixed $field = null, mixed $on = null, string $type = 'INNER') static 视图查询
 * @method \think\db\Query field(mixed $field, boolean $except = false) static 指定查询字段
 * @method \think\db\Query fieldRaw(string $field, array $bind = []) static 指定查询字段
 * @method \think\db\Query union(mixed $union, boolean $all = false) static UNION查询
 * @method \think\db\Query limit(mixed $offset, integer $length = null) static 查询LIMIT
 * @method \think\db\Query order(mixed $field, string $order = null) static 查询ORDER
 * @method \think\db\Query orderRaw(string $field, array $bind = []) static 查询ORDER
 * @method \think\db\Query cache(mixed $key = null , integer $expire = null) static 设置查询缓存
 * @method \think\db\Query withAttr(string $name,callable $callback = null) static 使用获取器获取数据
 * @method mixed value(string $field) static 获取某个字段的值
 * @method array column(string $field, string $key = '') static 获取某个列的值
 * @method mixed find(mixed $data = null) static 查询单个记录
 * @method mixed select(mixed $data = null) static 查询多个记录
 * @method integer insert(array $data, boolean $replace = false, boolean $getLastInsID = false, string $sequence = null) static 插入一条记录
 * @method integer insertGetId(array $data, boolean $replace = false, string $sequence = null) static 插入一条记录并返回自增ID
 * @method integer insertAll(array $dataSet) static 插入多条记录
 * @method integer update(array $data) static 更新记录
 * @method integer delete(mixed $data = null) static 删除记录
 * @method boolean chunk(integer $count, callable $callback, string $column = null) static 分块获取数据
 * @method \Generator cursor(mixed $data = null) static 使用游标查找记录
 * @method mixed query(string $sql, array $bind = [], boolean $master = false, bool $pdo = false) static SQL查询
 * @method integer execute(string $sql, array $bind = [], boolean $fetch = false, boolean $getLastInsID = false, string $sequence = null) static SQL执行
 * @method \think\Paginator paginate(integer $listRows = 15, mixed $simple = null, array $config = []) static 分页查询
 * @method mixed transaction(callable $callback) static 执行数据库事务
 * @method void startTrans() static 启动事务
 * @method void commit() static 用于非自动提交状态下面的查询提交
 * @method void rollback() static 事务回滚
 * @method boolean batchQuery(array $sqlArray) static 批处理执行SQL语句
 * @method string getLastInsID(string $sequence = null) static 获取最近插入的ID
 */

时隔一月有余,不知各位读者学习进度如何?是否已经在学习后端开发的路上?本地开发环境是否已经自己动手搭起来了呢?倘若没有,那就好好再学习一下本篇文章吧!本篇文章以WNMP(Windows+Nginx+MySQL+PHP)环境为例。

一、准备工作

(1)拥有一个Windows操作系统,本文所用系统Windows10

(2)Nginx下载:https://nginx.org/en/download.html (建议下载稳定版本)

(3)MySQL下载:https://www.mysql.com/downloads/

(4)PHP下载:https://windows.php.net/download/

1.png

01.png

二、Nginx安装

(1)直接将下载好的Nginx安装包解压到目标目录(自己选择安装目录,路径不要含中文),重命名为Nginx

2.png

(2)进入Nginx目录直接双击Nginx.exe即可启动Nginx或者进入cmd使用命令start nginx(停止命令为:nginx -s stop),启动后进入浏览器访问localhost(127.0.0.1)会有如下界面

3.png

三、MySQL安装

(1)选择安装方式Server only

4.png

(2)后续无特殊说明的均直接next

5.png

(3)这一步很重要!!!一定要选第二个!

6.png

(4)输入root密码,自己要牢记

7.png

(5)默认即可,如果有黄色感叹号,需修改名称

8.png

(6)如图,点击后需等待一会

9.png

(7)后续直接下一步直至安装完成

10.png

(8)验证一下是否安装成功,打开刚刚安装的mysql命令行客户端,输入刚设置的密码

11.png

(9)若出现如下信息则安装成功

12.png

四、PHP安装及Nginx配置

(1)解压到目标目录

13.png

(2)复制一份php.ini-development改名为php.ini放到安装路径下,

14.png

(3)将php.ini打开直接添加如下内容,extension_dir = "你的PHP安装路径\ext"

cgi.fix_pathinfo=1
cgi.force_redirect = 0
fastcgi.impersonate = 1
cgi.rfc2616_headers = 1
extension_dir = "C:\software\wnmp\php\ext"

15.png

(4)打开cmd并进入到PHP安装目录(建议直接配置一下PHP的环境变量,方便全局执行),执行命令:php-cgi.exe -b 127.0.0.1:9000 -c 你的PHP安装路径,注意执行后这个cmd窗口不要关闭

php-cgi.exe -b 127.0.0.1:9000 -c C:\software\wnmp\php

(5)修改nginx.conf文件(在Nginx安装目录下的conf文件夹下,修改前建议备份,防止出错),找到配置文件中的如下内容,并修改或添加

location / {
            root   html;
            index  index.html index.php index.htm;
            #这里添加index.php
        }

 location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
           # fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
           #这一部分前面的#号全部去掉,并将上面这一句改为下面这一句,否则会报运行PHP文件No 
           #input file specified错误
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

(6)重启Nginx,此时在html文件夹下放入PHP文件便可以通过浏览器正常访问了,大功告成

五、总结

开发环境的搭建并非一个简单的过程,中间可能会遇到非常多的问题,对于新手而言建议在虚拟机上先尝试几次防止出现一些不可逆的错误,虽然安装过程比较繁琐但不失于是一次学习的过程,本次系列教程暂时告一段落,但学习的过程还远远没有结束,后续本系列教程将会得到更多的扩充,最后在这里也给各位读者留下一些问题望各位读者可以自行学习解决。

  • 问题一:MySQL数据库如何使用?
  • 问题二:如何修改服务器根目录?(提示:本文是将PHP文件放在html目录,进而通过localhost访问)
  • 问题三:Linux系统下如何搭建开发环境?
  • 问题四:本地Web项目如何实现局域网下不同设备的访问?
  • 问题五:尝试将自己的项目部署到自己的服务器上并实现访问(相信这是一个并不算短的学习过程,前提是你要先把基础学好)
  • 问题六:了解phpstudy和宝塔Linux

通过前面学习你应该对Web开发有了一定了解,如果现在你已经学习过了前后端语言,不知道有没有想过动手开发一个系统呢?是不是觉得难度很大,单单一个前端页面是不是就需要花费大量的时间呢?当然学习的过程一定不是一蹴而就的,在刚开始学习阶段还是实打实的一点点敲代码更好。倘若你已经学完了基础语言,那么接下来就了解一下框架吧!!

一、何为框架?

  • 百度定义:框架( Framework )是构成一类特定软件可复用设计的一组相互协作的类。框架规定了你的应用的体系结构。它定义了整体结构,类和对象的分割,各部分的主要责任,类和对象怎么协作,以及控制流程。框架预定义了这些设计参数,以便于应用设计者或实现者能集中精力于应用本身的特定细节。
  • 对上述解释你可能不太理解,不过没关系,你只需要知道使用框架将会为Web开发提供极大的便利,等你学习过后自然就会有一个清晰的概念。

    二、为什么使用框架

  • (1)简单易学,大大提高开发效率和开发质量;
  • (2)规范代码结构,方便日后维护;
  • (3)相比手写能够大大提升程序安全性。

    三、常用框架

    (一)Bootstrap

  • Bootstrap官网:https://www.bootcss.com/
  • 开源的HTML、CSS和JS框架,用于开发响应式布局移动设备优先的Web项目。

    (二)Layui

  • Layui官网:https://layui.org.cn/
  • 开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,常适合网页界面的快速开发。

    (三)JQuery

  • JQuery官网:https://jquery.com/
  • 快速、简洁的JavaScript框架,极大地简化了 JavaScript 编程。
  • 具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的CSS选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。

    (四)Vue.js

  • Vue官网:https://cn.vuejs.org/
  • 是一套用于构建用户界面的渐进式JavaScript框架。

    (四)ThinkPHP

  • ThinkPHP5.1开发文档:https://www.kancloud.cn/manual/thinkphp5_1/353946
  • ThinkPHP6.0开发文档:https://www.kancloud.cn/manual/thinkphp6_0/1037481
  • 快速、兼容而且简单的轻量级国产PHP开发框架。
  • ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。

    (五)Spring Boot

  • Spring Boot官网:https://spring.io/projects/spring-boot
  • 是Java平台上的一种开源应用框架。

接上篇。相信大家对Web前端开发语言已经有了一定了解。倘若你只想要成为一名前端开发工程师,那么你只需要着重学习好HTML、CSS和JavaScript,倘若你更倾向于后端开发,那么在具备一定前端语言知识后更需要着重学习后端开发语言。

一、常见后端开发语言

  • 不同于前端开发语言,后端开发语言种类丰富,当然并不是所有的语言都适合Web后端的开发,目前在Web开发领域比较常用的语言有java、Go、PHP、Python等。
  • 面对如此丰富的语言我们应该如何选择呢?全部掌握显然不太现实,着重掌握一门两门应如何选择呢?
  • 在做出选择之前我们应明确一下自己学习Web开发的目的,倘若是自己对Web感兴趣,对初学者而言PHP绝对是最佳的选择;倘若一心想要找工作,依照当前形势Java是个非常不错的选择。自己能够熟练掌握任何一门语言对未来找工作都是有巨大帮助的,抛开Web不谈,开发语言只是一种操作方式,框架才是生产力,纵然有很多语言比较冷门甚至于你都没有听说过,但有的语言框架功能非常强大,它依然是实际项目中的重要力量。所以不必纠结该学习哪一门语言,坚持学完并掌握一门语言才是我们的目标,而且相比于学习一门语言更重要的是学习项目开发的思维。

二、PHP

  • PHP是在服务器端执行的脚本语言,非常适用于Web开发并且可以嵌入到HTML当中。PHP语法学习了C语言,吸纳了Java等多个语言的特色发展出了自己的特色语法,并根据它们的长处持续改进提升自己。PHP同时支持面向对象和面向过程的开发,使用上非常灵活。作为Web开发领域元老级语言,PHP以其开源免费、快捷高效、跨平台等优点在中小型网站开发中应用极其广泛, 但是对于较大的和非常复杂的项目,PHP表现就比较薄弱了,但新版本的PHP在性能方面不断有新的提升,此外PHP简单易学,是小白入门不错的选择。

三、Java

  • Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,Java语言具有功能强大和简单易用两个特征。Java语言应用范围广泛,除了在Web开发方面出色之外,在应用程序开发、分布式系统和嵌入式系统应用程序开发等方面也非常出色,而且还适合用于大数据分析等领域。Java具有面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点,国内很多公司都有Java岗位,同样学习Java的人数也非常多,java岗位内卷严重,但是java并非是简单易学的一门语言,对于Web初学者而言,需谨慎选择。

四、Python

  • Python是目前最受欢迎的编程语言,由于其是一门解释型语言,使它成为多数平台上写脚本和快速开发应用的编程语言,并且被广泛应用于科学计算、人工智能领域。 Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能,由于Python的可扩展性强,又被称为“胶水语言”,Python虽然在Web开发方面不及前两者应用广泛,但其可以作为一个非常不错的工具来使用,学习Python也是很有必要。Python语言简单易学,语法精炼、易读性强,学习起来也相对容易。

五、Go

  • Go(又称 Golang)是一种非常高效的语言,高度支持并发性。用在后端服务器编程上有天然的优势,Go语言语法简单,也比较容易学习,在国内也有发展趋势,目前Go语言岗位并不太多。



本篇文章仅对后端开发语言进行简单的介绍,无论选择学习哪个,坚持学下去才是最为重要的!!!人生苦短,我选PHP。

简单了解一些web基础知识后,就下来就进入到建站系列最为重要的环节--网站开发,一起来了解一下吧!

一、前端开发与后端开发

  • 前端开发是指创建Web页面或APP等前端界面呈现给用户的过程,此系列主要探讨网站前端页面也就是网页的页面开发,所谓的网站前端其实是指Web应用中用户可以看得见碰得着的东西。包括Web页面的结构、Web的外观视觉表现、Web层面的交互实现,如网页上的特效、网页的布局、图片、视频等内容。网站前端开发的工作内容就是将美工设计的效果图通过前端开发语言转换成浏览器可以运行的网页。用于Web前端开发的语言成为前端开发语言,主要是指HTML、CSS和JavaScript。
  • 后端开发一般也叫做后台,主要是网站后台逻辑的设计和实现、用户及网站的数据的保存和读取等。比如一般网站都是有用户注册和登录的,用户的注册的信息通过前端发送给后端,后端将其保存在数据库中,用户登录网站的时候,后端需要通过对比用户输入的用户名和密码与数据库中用户注册的信息是否一致来判断用户是否有权限登录,这也是后台开发中的一个最简单的功能。

    二、前端语言简介

    (一)、HTML

  • HTML(Hyper Text Markup Language)即超文本标记语言,是一种用来创建网页文件的语言。使用HTML语言编写的文件能够被浏览器直接解析,网页的本质就是超文本标记语言,通过结合使用其他的Web技术,可以创造出功能强大的网页。因而,超文本标记语言是Web编程的基础。超文本标记语言之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。
  • HTML5,也就是我们将要学习HTML版本(在此之前也有HTML4等版本,不再深究),HTML5极大地提升了Web在富媒体、富内容和富应用等方面的能力,被喻为终将改变移动互联网的重要推手。Internet Explorer 8及以前的版本不支持。

    (二)、CSS

  • CSS(Cascading Style Sheets,层叠样式表)是一种定义HTML等文件样式结构如字体、颜色、位置等的语言,被用于描述网页上的信息格式化和显示的方式。简而言之CSS就是用来修饰美化我们写出来的网页,使其更加丰富多彩。

    (三)、JavaScript

  • JavaScript(简称“JS”) 是一种解释型或即时编译型的编程语言。常作为开发Web页面的脚本语言,虽然和Java听起来颇有相似之处,但实际上和Java语言毫无关系,主要用来向HTML页面添加交互行为,相对而言也是前端开发语言中学习难度较大的一门语言。

    三、学习指导

    简单了解完前端开发语言,那么接下来就进入到学习当中,由于前端语言内容丰富(当然学习起来还是很简单的),不便以全文字教程呈现,所以推荐读者自行寻找学习资源进行学习。为方便读者后续学习,此处就带领大家进行一个简单的入门。

    (一)、开发环境

  • 由于前端语言可以被浏览器直接解析,因此无需在前端学习过程中进行繁琐的Web环境的搭建,所以此处仅需安装一个用来写代码的软件即可,推荐使用VSCode。初次安装打开后是英文界面,如果需更更改为中文,可以在扩展中搜索并安装中文插件。(如下图)。
    01

(二)、第一个Hello,world!

  • 创建一个(.html)为后缀名的文件,在软件中创建方法:Ctrl+N键创建一个空文件,再Ctrl+S键保存,自行选择保存位置,并自行更改文件名为index.html(只要是以.html为后缀的文件均可,不一定以index为文件名)
    02
  • 输入一个 ! 号(英文状态下),会出现提示,直接回车便会自动生成默认代码。
    03
  • 04
  • 在body标签之间插入一个

    Hello,world!


    05
  • Ctrl+S键保存,然后以浏览器方式打开文件或打开浏览器直接把文件拖到浏览器当中去。
    06
  • 大功告成,是不是看到了熟悉的Hello,world!

最后,CSS和JavaScript的学习会在你学习HTML5的过程中逐步了解,本篇文章不再进行深入讨论,接下来就请感兴趣的读者投身前端的学习当中去吧,后端开发及网站环境搭建将会在后续篇章中更新!