php mysql练手_ThinkPHP5练手Demo实战

最近有个朋友有个小需求,刚好有时间,也刚好准备研究一下tp5,听说tp5规范了,而且更傻瓜化了。

便做了这个论坛的小Demo,开源出来玩玩,改天做两个模版。说句实话,TP5模型层,数据库层真的很好用

Env Docker

docker大家肯定已经熟悉不过了

环境: Redis3.1+PHP5.6-fpm+Nginx+Mysql5.7

项目地址

演示站点

Usage

2.docker-compose up --build -d

第一次需要手动导入测试数据

导入默认的测试数据

$ docker network ls

$ docker run -it --link mysql-db:mysql --network client101vbbs_default -v `pwd`/data/backup:/data/backup:ro --rm mysql:5.7 sh -c 'exec mysql -h"mysql" -P"3306" -uroot -p"zhaojun" oeynet_client_bbs<.>

Docker Containers

composer 临时容器,安装composer包

bower 临时容器,安装前端包、

下面就是nmp环境而已了

nginx

php-fpm

mysql-db

redis

项目依赖

Bower

{

"name": "101-bbs-front",

"version": "1.0.0",

"keywords": [

"101v BBs"

],

"main": "app.js",

"dependencies": {

"jquery": "^3.2.1",

"vue": "^2.3.4",

"bootstrap": "^3.3.7",

"requirejs": "^2.3.3",

"require-css": "^0.1.10",

"axios": "^0.16.2",

"layer": "^3.0.3",

"wangEditor": "^3.0.3",

"animate.css": "^3.5.2"

}

}

Composer

{

"name": "oeynet/simple-bbs",

"description": "new simple bbs",

"type": "project",

"keywords": [

"bbs",

"forum",

"project"

],

"homepage": "http://bbs.oeynet.com/",

"license": "Apache-2.0",

"authors": [

{

"name": "zhaojunlike",

"email": "zhaojunlike@gmail.com"

}

],

"require": {

"php": ">=5.4.0",

"topthink/framework": "^5.0.6",

"topthink/think-captcha": "^1.0",

"topthink/think-testing": "^1.0",

"bluem/tree": "^1.5",

"oeynet/helper": "^0.1",

"oeynet/add-captcha": "^0.2.0",

"voku/anti-xss": "^2.1"

},

"autoload": {

"psr-4": {

"tests\\": "tests"

},

"files": [

]

},

"extra": {

"think-path": "thinkphp"

},

"config": {

"preferred-install": "dist"

},

"repositories": {

"packagist": {

"type": "composer",

"url": "https://packagist.phpcomposer.com"

}

}

}

Tp5踩过的坑

1.模型关联

2.模型验证,控制器验证

3.动态属性

4.view层大小写(以为控制器对应视图层大小写都规范,最后view全部都换小写了,不然会在linux部署报错)

Demo演示

Screenshots

首页

1460000010209032

首页我的附件

1460000010209033

内容管理

1460000010209034

用户管理和小黑屋

1460000010209035

系统统计和配置

1460000010209036

RBAC权限用户组

1460000010209037

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php web mysql数据库_使用php从web访问mysql

php提供多种操作数据库的方案&#xff1a;mysql扩展、mysqli扩展、PDO等。mysql扩展是伴随着php的产生而产生的&#xff0c;随着mysql数据库的发展mysql扩展不能够支持mysql数据库的一些新的特性如预加载功能&#xff0c;mysqli扩展应运而生&#xff0c;重新梳理了php对mysql数…

ubuntu 12.04 mysql_ubuntu12.04 安装和卸载mysql

1&#xff1a;登录系统&#xff0c;安装之前最好先&#xff0c;apt-get update否则会出现找不到安装文件得错误提示2&#xff1a;安装MySQL服务器以及客户端apt-get install mysql-server mysql-client安装得过程中会提示你输入root得密码。3&#xff1a;安装完成以后默认mysql…

oracle实验六杨艳华_oracle实验报告总结

Oracle 实验报告 姓名 学院: 年级: 班级: 指导老师: 实验一 了解 ...学期 Oracle 数据库应用技术 实验报告 选课序号: 班级: 学号: 姓名: 指导教师: 成绩: 史金余 2017 年月日 目录 1.实验目的 ... 学期Oracle 数据库应用......学期 Oracle 数据库应用技术实验报告 选课序号: 班…

python打印生成word_使用python调用zabbix接口截取监控图并生成Word文档

#/usr/bin/python#codingutf-8import json,urllib2,time,os,re,shutilfrom docx import Documentfrom docx.shared import Ptfrom docx.shared import Inchesfrom docx.oxml.ns import qnfrom selenium import webdriverperiod604800#需要获取的监控周期&#xff0c;单位是秒za…

wordpress mysql 密码重置_WordPress忘记密码找回登录密码的四种行之有效的方法

WordPress忘记密码找回登录密码的四种行之有效的方法PS&#xff1a;20170214更新&#xff0c;感谢SuperDoge同学提供的方法&#xff0c;登入phpMyAdmin后&#xff0c;先从左边选自己的数据库&#xff0c;然后点上面的 SQL 标签页&#xff0c;执行下面命令&#xff1a;UPDATE wp…

拷贝 var lib mysql 备份_mysql复制与备份

备份策略&#xff1a;完全差异binlog完全增量binlogbinlog最好能实时备份到另一个节点上。完全备份&#xff0c;多久一次&#xff1f;数据变化量&#xff1a;有20%&#xff0c;建议使用完全备份。可用的备份存储空间&#xff1a;数据变化量很大&#xff0c;可以每天做一个完全备…

nodejs+vue+微信小程序+python+PHP的4s店客户管理系统-计算机毕业设计推荐

系统的功能结构是系统实现的框架&#xff0c;本系统的主要结构为管理员和用户、员工。管理员的功能为车辆信息管理、用户管理、售后服务管理、售后安排管理、完成售后管理等。 本系统实现了售后的在线申请与处理&#xff0c;方便了用户和管理员、员工三方的利益&#xff0c;提高…

mysql 语句 集锦_mysql 语句集锦

查看数据库各表容量大小&#xff1a;select TABLE_NAME, concat(truncate(data_length/1024/1024,2), MB) as data_size,concat(truncate(index_length/1024/1024,2), MB) as index_sizefrom information_schema.tables where TABLE_SCHEMA cjssgroup by TABLE_NAMEorder by d…

esd防护_电路级ESD防护方法

电路板级的ESD防护方法有很多种类&#xff0c;常见的有以下几个方法1、并联放电器件常用的放电器件有ESD/TVS&#xff0c;固体放电管&#xff0c;稳压二极管&#xff0c;压敏电阻&#xff0c;气体放电管等瞬变电压消除器 TVS(Transient Voltage Suppressor)&#xff1a; TVS 是…

mysql中如何判断数组和链表_数据结构之链表与数组(-)——数组和链表的简介...

众所周知&#xff0c;在计算机中要对给定的数据集进行若干处理&#xff0c;首要任务是把数据集的一部分(当数据量非常大时&#xff0c;可能只能一部分一部分地读取数据到内存中来处理)或全部存储到内存中&#xff0c;然后再对内存中的数据进行各种处理。例如&#xff0c;对于数…

python从字符串中提取数字并转换为相应数据类型_python从PDF中提取数据的示例

01前言数据是数据科学中任何分析的关键&#xff0c;大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据。然而&#xff0c;由于可移植文档格式(pdf)文件是最常用的文件格式之一&#xff0c;因此每个数据科学家都应该了解如何从pdf文件中提取数据&#xff0c…

python延时队列_如何通过Python实现RabbitMQ延迟队列

最近在做一任务时&#xff0c;遇到需要延迟处理的数据&#xff0c;最开始的做法是现将数据存储在数据库&#xff0c;然后写个脚本&#xff0c;隔五分钟扫描数据表再处理数据&#xff0c;实际效果并不好。因为系统本身一直在用rabbitmq做异步处理任务的中间件&#xff0c;所以想…

mysql 触发器 库存管理_Mysql中的触发器(库存、用户订单中用到)

什么是触发器&#xff1f;触发器是数据库的一个程序&#xff0c;他是用来监听着数据表的某个行为&#xff0c;一旦数据表的这个行为发生了&#xff0c;马上执行相应的sql语句触发器的语法结构&#xff1a;create trigger触发器的名称触发器事件on监听的表名for each row行为发生…

vue 修改标题栏_VUE动态修改titile的三种方法

第一种&#xff1a;适用于在已经定义好title的情况下&#xff0c;例如首页&#xff0c;关于页等等1.1 main.jsconst defaultTitle 默认 titlerouter.beforeEach((to, from, next)>{document.title to.meta.title ?to.meta.title : defaultTitlenext()})1.2 index.jsroutes…

安卓 监听 mysql_Android监听数据库的值改变与否

做购物车的时候有这个需要&#xff0c;当点击增加数量的时候&#xff0c;要更更新总价与数量&#xff0c;也就是往数据库里更新数据&#xff0c;当更新完的时候&#xff0c;就要计算出新的价钱&#xff0c;这就需要对数据库进行监听。这就要用到内容观察者了。第一步&#xff1…

while的用法java_java中的while循环和do while循环

那么在讲解循环之前呢我们先来了解一下什么是循环 生活中的例子 车子的轮胎他就是一直在循环 马拉松跑到也是在循环 因为运动员不停的一圈一圈在跑这也是一个循环那么我们为什么要学习循环呢&#xff1f;下面看一个小问题 张浩Java考试成绩未达到自己的目标。为了表明自己勤…

迷宫java代码_java写的迷宫代码

迷宫代码&#xff1a;截图如下&#xff1a;packagecom.zxl.maze;/** 抽象类表示选择不同的算法*/public abstract classAbstractMap{/** 得到数据*/public abstract boolean[][] getData(int m,intn);/** 重置*/public abstract void reset(int m,intn);}packagecom.zxl.maze;/…

java时间加减_java时间加减

展开全部1.用java.util.Calender来实现Calendar calendarCalendar.getInstance();calendar.setTime(new Date());System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//今天的日期calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)1);//让日期加…

java 1%10_Java获取随机数的3种方法

方法1(数据类型)(最小值Math.random()*(最大值-最小值1))例:(int)(1Math.random()*(10-11))从1到10的int型随数方法2获得随机数for (int i0;i<30;i){System.out.println((int)(1Math.random()*10));}(int)(1Math.random()*10)通过java.Math包的random方法得到1-10的int随机数…

java class list_详解Java 集合类 List 的那些坑

现在的一些高级编程语言都会提供各种开箱即用的数据结构的实现&#xff0c;像 Java 编程语言的集合框架中就提供了各种实现&#xff0c;集合类包含 Map 和 Collection 两个大类&#xff0c;其中 Collection 下面的 List 列表是我们经常使用的集合类之一&#xff0c;很多的业务代…