记录下第一次安装配置laravel的心路历程

image

第一步:配置虚拟机.

我选定是Virtualbox,添加homestead环境.

第二步:下载安装Git

我选择的是从官网下载

image

第三步:通过终端命令从git仓库克隆homestead

cd ~ git clone https://github.com/laravel/homestead.git Homestead

image

第四步:检查版本以及运行bash

image

第五步:设置Provider

image

此处省略千万个飞奔的草泥马…..

然后到了这一步:

image

中间有个非常重要的设置私钥的命令

ssh-keygen

接下来安装composer,很复杂,你需要先下载好PHP7.2的源代码

image

紧接着通过指令安装laravel

image

前端学习全套百度云盘资源视频

1.ps 链接:
https://pan.baidu.com/s/1mjYbcJA
密码:pqdt
2.HTML5+CSS3从入门到精通.iso 链接:
https://pan.baidu.com/s/1cUHz3o
密码:gdyw
3.Javascript视频教程 链接: https://pan.baidu.com/s/1i6eC5YP
密码:ku5k
4.Jquery视频教程 链接:https://pan.baidu.com/s/17DbNSnR3q5OGSjdw9tvCEA
密码:twcp
5.Bootstrap视频教程 链接: https://pan.baidu.com/s/1jKb2UDS
密码:wr8c
6.Vue.js 链接:
https://pan.baidu.com/s/1slYqBa1
密码:75xd
7.Smarty模板引擎视频教程 链接: https://pan.baidu.com/s/1smewom5
密码:v8vp
8.Nodejs 链接: https://pan.baidu.com/s/1sm509GD
密码:fux1
9.Mysql视频教程 链接: https://pan.baidu.com/s/1kVTdjcr
密码:e37d
10.PHP视频教程 链接: https://pan.baidu.com/s/1kWE0qZP
密码:xc4q
11.oracle视频教程 链接: https://pan.baidu.com/s/1i6jwpal
密码:hk6p
12.nginx视频教程 链接: https://pan.baidu.com/s/1nxccLg1
密码:x2q8
13.ajax 链接:
  https://pan.baidu.com/s/1dHctdXv
密码:jfwf
14.mongodb视频教程 链接: https://pan.baidu.com/s/1c3EE7U4
密码:7v8b
15.Angular.js链接: https://pan.baidu.com/s/1jJhYrEu
密码:ddci
16.React链接:
https://pan.baidu.com/s/1nwnrQxb
密码:942g
17.dedeCMS织梦视频 链接: https://pan.baidu.com/s/1bpQBCbP
密码:ikns
18.ThinkPHP视频教程 链接: https://pan.baidu.com/s/1ggiKvYV
密码:7p5h
19.案例和总结 链接: https://pan.baidu.com/s/1eTSNB5C
密码:5rx7
20.天猫商城购物车实战 链接: https://pan.baidu.com/s/1smVjb7v
密码:cu4c
21.Java学科链接:https://pan.baidu.com/s/1DtnDNv1p9ENZETLqIuKytw
  密码:82lk
22.Python链接:https://pan.baidu.com/s/1scBXSLdiTs9SBixdkykflw
密码:ck51
23.nodejs微信开发链接:https://pan.baidu.com/s/15tYBZ2yVz9aPO57LKqt7Mg
密码:jrwb

这些资料是我跟前阿里架构师整理出来的,记得认真看,多做项目!
收到回复一朵玫瑰,然后我会告诉你如何轻松一个月增加1万元薪资!

MVC框架原理第一天笔记

面向对象关键字:

class

public,protected,private

static

const

self,parent,static

extends

implements

abstract

interface

final

new

clone

$this

介绍项目开发

安装ecshop

解压压缩包后,获取其中upload子目录的所有文件,将其放置到可以被浏览器请求到某个目录(建议改名)

clip_image002

请求,index.php即可!

clip_image003

会自动跳转到安装页面(或者可以请求install/index.php)

配置php

ecshop需要mysql扩展与gd扩展(图片处理扩展)支持!

clip_image005

clip_image006

clip_image007

clip_image008

配置系统

配置数据库信息

clip_image010

配置ecshop管理员的信息

clip_image011

其他配置:

建议安装测试数据

clip_image013

安装即可

安装成功:

前台地址:

clip_image014

后天地址:

clip_image016

项目的开发周期

需求分析
设计

编码设计,应该如何实现!

两大方向:

一,二次开发,基于已有产品,做后期自定义处理!产品,已经实现了主体业务逻辑功能代码!

商场:ecshop,ecmall,shpex,zen-cart,es-commerce

CMS,内容管理,博客,wordpress,dedecms,drupal,

论坛,discuz,phpwind

二,基于框架开发

框架,只有基础公共代码,而没有业务逻辑的产品,就是框架!

Thinkphp,YII,Zendframework,symfony,ci,fleaphp,quephp,

编码实现
测试,调试,修改
上线,生产阶段
维护,升级,改版

代码的进化流程

one,混编

嵌入式脚本语言PHP

html与php混编的编码方式

two,显示和逻辑相分离

最后,需要将显示和逻辑的结果放在一起!

需要在 php页面,将html代码 载入才可以!

此时的请求,一定要去请求负责逻辑的php代码:

clip_image018

需要在html代码中,遍历数据,将数据展示!

clip_image020

代码分工后,易于维护和管理!从管理项目的角度出发的!

模板文件

注意当前的html页面,出现:显示格式部分由html代码充当,而数据部分需要通过php来实现。数据,特指数据的展示。(数据的获得实在负责逻辑的php代码中完成)

这样的html文件,就被称之为模(mu)板文件(template)

限制用户访问php逻辑文件

办法多得是,典型的两种:

1,.htaccess

deny from all

利用Apache的对访问的控制,将某个目录设置成禁止访问。将所有的模板都放入到目录内!

clip_image022

控制该目录的访问:

clip_image024

注意,htaccess生效的前提是,Apache对目录开启了allowoverride :

clip_image026

2,将不允许用户访问的文件,包含模板文件,都放置文档根目录之外!

浏览器请求只能看到文档根目录下的文件。

three,处理数据(处理业务逻辑的代码),从php代码中分离

场景,在完成一个其他页面,在其他页面使用到了相同的功能!

出现的数据操作逻辑的代码的重复!

解决:将重复提取!

新增专门处理数据的php代码

clip_image028

在需要比赛列表时,调用该函数即可!

clip_image030

clip_image032

one,two,three的进化流程:

clip_image034

mvc项目分层,设计思想

mvc,项目的分层思想,指的是完成一个业务逻辑,需要三大部分,分别是:

1, 具体的业务逻辑实现的部分,数据操作,称之为 M,Model,模型!

2, 具体显示样式的实现部分,html+css+js,称之为 V,View,视图!

3, 负责整体流程控制的部分,负责调用M和V。成为 C,Controller,控制器!

参考four的实现

项目如果是按照上面的分工方式实现的,项目就是按照 MVC的设计思想设计的!

(只是一个项目分层思想,不决定语法)

clip_image036

典型,mvc的实现:

用户浏览器去请求控制器

控制调用模型实现业务逻辑数据处理

控制器调用视图,利用模板将数据展示!

clip_image038

mvc==thinkphp,zend-framework

mvc思想,

mvc框架,基于mvc设计思想所实现的框架就称之为mvc框架!

模型的处理

模型类

业务逻辑的处理,最终都是通过操作数据库完成!

mvc分层中,典型的模型是:

每个模型,是一个对象!一个模型对象,负责完成数据库中一个表的操作!

clip_image040

此时,针对于某个表的操作,就应该被封装到相应的模型类中!

例如,操作,match表,会有如下的模型:

clip_image041

完成比赛列表,在获得数据时,应该通过实例化该模型类的对象,调用其获得数据的方法!

clip_image043

使用该模型类:

实例化该类对象,调用该方法:

clip_image044

反三:班级列表

一,控制器

增加一个控制器文件,并完成向 模型和视图 发出命令

clip_image046

二, 模型

建立一个ClassModel模型类文件

并增加一个getList方法,返回所有的班级数据

clip_image048

三, 增加一个视图模板

clip_image050

基础模型类

clip_image052

模型的公共操作的提取

增加一个模型基础类:

clip_image053

所有的模型都应该继承自该模型基础类:

clip_image055

clip_image057

别忘了载入Model类才可以:

clip_image059

因该在实例化模型对象时,就完成数据库的连接!

在基础模型类中,增加构造方法,被子类所继承。需要在构造方法中,完成数据的连接

Model.class.php

clip_image061

此时,一旦实例化就完成了连接工作

模型类利用MySQLDB类对象操作数据

clip_image063

此时,在基础模型类中,初始化数据库连接,其实就是实例化MysQLDB类的对象并,保存到当前的对象的$db属性上!

Model.class.php

clip_image065

clip_image067

具体的模型中,如果需要执行sql,就应该使用模型对象$db属性中保存的MySQLDB类对象来完成:

ClassModel.class.php

clip_image069

控制器的处理

场景:

增加一个班级的添加功能(删除,修改),如何完成

删除,控制器,模型,视图

控制器:

clip_image070

class_delete_controller.php

clip_image072

模型

在 ClassModel中则增加方法即可

clip_image074

视图

不需要!

增加模块,控制器代码的集合

不能是每个操作都增加一个控制器文件,那么如何管理这些操作呢?

使用模块的概念!

模块,module,类似的操作的集合,例如,班级管理模块!

增加班级管理模块文件:

一个模块文件,就是多个功能的集合!

clip_image076

此时,完成班级操作,都要请求,class_module.php这个文件!

问题是,如何判断,当前的请求应该执行哪个具体的工作?

应该在请求 该模块文件时,增加一个参数,表示当前用户浏览器想要执行的操作!

a(action),动作的!一个操作称之为一个动作!

class_module.php?a=list 列表

class_module.php?a=del 删除

典型的应该利用流程分支控制:

class_module.php

clip_image078

此时,在浏览器请求时:需要:

clip_image079

控制器类

将刚刚所完成一个控制器模块文件,升级成一个控制器类

clip_image080

模块内的每个功能,变成控制器模块类的一个方法:

ClassController.class.php

clip_image081

clip_image083

此时,需要对控制器类进行实例化,还需要确定调用哪个方法!

需要找一个额外的文件,进行classController类的实例化!

新增文件:

index.php

clip_image085

此时,我需要看到列表:

clip_image086

入口文件,index.php

由于所有的控制器都是类!

所有的请求都需要从index.php开始,因此被称之为项目的入口文件!

主要负责,接收到请求,并且根据请求参数,将该请求分发到某个控制器的某个具体方法动作上。 因此入口文件也被称之为:请求分发器!

由于功能上整体流程控制一部,也是控制器。因此也被称之为: 前端控制器

如果有多个控制器类,需要多个实例化控制器类的操作!

如何在一个文件中,完成动态的控制类实例化的工作?

类似于action动作的区别,增加请求参数,表示当前所请求的控制器类!

c,controller,表示当前所请求的控制类

例如
班级列表: index.php?c=Class&a=list

学生删除:index.php?c=Student&a=del

因此,需要在实例化控制器类时,需要先判断当前的c参数,再来确定:

clip_image088

clip_image089

注意:

一旦完成了上面规划:

要求,用户的所有请求,都要经过index.php入口文件,分发给控制器的动作再往下执行!

index.php?c=xxx&a=yyy

clip_image091

预习

框架的概念。将共用的代码提取出来!

作业

利用six版本,实现 比赛,学生,班级信息展示!

自动为WordPress文章添加第一张图片为特色图片的代码

image

  1. function wpforce_featured() {
  2. global $post;
  3. $already_has_thumb = has_post_thumbnail($post->ID);
  4. if (!$already_has_thumb)  {
  5. $attached_image = get_children( “post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1” );
  6. if ($attached_image) {
  7.                 foreach ($attached_image as $attachment_id => $attachment) {
  8.                 set_post_thumbnail($post->ID, $attachment_id);
  9.             }
  10.         }
  11.     }
  12. }  //end function
  13. add_action(‘the_post’, ‘wpforce_featured’);
  14. add_action(‘save_post’, ‘wpforce_featured’);
  15. add_action(‘draft_to_publish’, ‘wpforce_featured’);
  16. add_action(‘new_to_publish’, ‘wpforce_featured’);
  17. add_action(‘pending_to_publish’, ‘wpforce_featured’);
  18. add_action(‘future_to_publish’, ‘wpforce_featured’);

利用两个PHP脚本嵌套,实现从数据库中循环读取比赛信息到表单中并显示

<?php
/**
* Created by PhpStorm.
* User: 18010
* Date: 2018/5/24
* Time: 10:53
*/
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset=”UTF-8″>
<title>比赛列表</title>
</head>
<body>
<h1>比赛列表信心公告</h1>
<table border=”1″ align=”center”>
<tr>
<th>比赛时间</th>
<th>比赛队员1</th>
<th>比赛结果</th>
<th>比赛队员2</th>

</tr>
<?php
//得到所有的比赛信息
mysql_connect(‘127.0.0.1:3307′,’root’,’root’);
mysql_query(‘set names utf8’);
mysql_query(‘use itcast’);
$sql=”select p1.id as p1_id,p2.id as p2_id,m.match_time,p1.stu_name as p1_name,m.match_result,
p2.stu_name as p2_name from select_match as m left join select_student as p1 on m.player_1=p1.id left join select_student as p2 on m.player_2=p2.id”;
$result=mysql_query($sql);

//以下为遍历输出 数据库有多少信息,就会打印多少结果 这种方法是用了两个PHP脚本进行相互嵌套
while ($row=mysql_fetch_assoc($result)){
?>
<tr>
<td><?php echo $row[‘match_time’];?></td>
<td><?php echo $row[‘p1_name’];?></td>
<td><?php echo $row[‘match_result’];?></td>
<td><?php echo $row[‘p2_name’];?></td>
</tr>
<?php
}
?>
</table>
</body>
</html>