============== 2017-03-21 start ==========
如何让移动端用户输入数字的方法
<input type=”tel” /> //手机端就会直接调出输入手机号的键盘,也可以输入其它字符,可以用JS再加入判断 详细见-传送门
js NaN判断方式
var a = NaN;
if(a == NaN ) //这种判断方式是错的 用下面的判断方式
if(isNaN(tmp)){
alert("NaN");
}
=========== 2017-03-24 end =============
设计构想
============= 设计理念 ================
onethink 模板制作、更新、重用、命名规则
html制作的模板路径位于: public/模块名/html
模板重用性考虑的问题: css类的重用、HTML代码复用
CSS重用性规则
- 查看所有UI图,分析哪些是公用CSS类、及可复用HTML结构
- 整理文件命名规则
- 通常由两个类组合使用 类1为公共类 类2为这个标签特指的样式
- 项目中的css手册-再更新或制做新页面的时候一些重用的类可以查阅复用
最后更新: 2017-03-13
============== 无情的分隔线 ===============
我的GIT代码库
ECODE项目_打造自动化编程
https://git.oschina.net/mjw/eCodePHP 传送门 (PHP)
HTML后台_签约模板
https://git.oschina.net/mjw/eCode 传送门 (HTML模板)
onethink_v1.0 插件库
https://git.oschina.net/mjw/onethinkPlug 传送门 (onethink插件库)
收集代码片段及自己写的牛逼程序
https://git.oschina.net/mjw/CodeLibrary 传送门 (任何语言都可能有 ^_^)
一个简单的python爬虫程序
https://git.oschina.net/mjw/python_5iweb 传送门 (采集一个网站的.zip文件)
H5_canvas的练习
https://git.oschina.net/mjw/fore-web 传送门 (h5练习代码)
MySql文档生成程序
https://git.oschina.net/mjw/sqlDoc 传送门 (PHP生成Mysql文档)
PHP-WEB项目开发流程?
- 需求先行-开发一个怎么样的项目、需要解决什么样的问题
- UML模式-用例图等等
- 原型图设计-设计项目的大致蓝图
- UI设计 – 以原型图为框架美化、装饰出平面图,以好让前端开发者参照开发
- 数据库设计 (如果原型图已经出来可以和UI设计同步进行) – 设计数据结构及分析部分逻辑
- 程序框架-制定开发原则、及通用类库 版本控制 搭建
- 漫长的开发与测试阶段
- 前端界面开发
- 整合代码
- 上线测试 – 黑盒测试
- 代码文档、使用手册、测试报告等文档制作与梳理
- 代码维护阶段
如何可以同步开发环境和测试环境的PHP代码?
方式1: 公司内部服务器 SVN 外网服务器GIT
SVN用于保存日常代码提交版本
GIT用于保存阶段性测试代码
测试服务器每次GIT就行
注意:SVN将.git 忽略不要提交到版本控制中(一些软件的配置都不应提交到版本中)
方式二:版本控制器与测试环境共存的
thinkphp3.2.0_如何在一个搜索框搜索不一样的字段?
来源是onthink1.0
$map['uid|nickname|mobile']= array(intval($nickname),array('like','%'.$nickname.'%'),array('like','%'.$nickname.'%'),'_multi'=>true);
phpstudy 配置URL重写 为什么显示 No input file specified ?
情况一: 切换版本的时候不要选有 -nts 的 如下图
thinkphp5 单元测试时无法请求?
由于我把thinkphp3 的 __ROOT__ 常量加到这个版本中来了,但在CMD模式下并没有加载所以导致问题的出现。
composer安装
https://getcomposer.org/download/ 下载安装程序 (VPN要开启)
以管理员权限安装, 选择php.exe所在的位置
完成安装!
- 配置国内镜像
https://pkg.phpcomposer.com/
如何标记没有完成或待完善的程序?
标识符 TODO:
一些巧妙的判断条件及变相三元
两个条件加括号法
if(!(is_numeric($id) || is_null($id))){
return '';
}
理论分析:加括号的原因
先分析下不加括号 如果没有加括号侧不能取非 即是取反。
加括号后 优化执行括号内部 is_numeric 返回 true 就不会执行 is_null , 如果 is_numeric 返回 false 就会执行 is_null 然后再括号外取反
实例分析:
参数 返回结果
字符串 a false || false
整型 10 true || false
字符串 ” false || true
onethink 模型 后台新建模型后再新建分类时不会在《绑定文档模型》这个选项里面?
答:因为你新建模型的时候选择了独立模型所有不会出现。
通过查看代码,onethink在通过函数common/function.php里有一个 get_document_model 函数,其中 读取数据库时有 $map[‘extend’] = array(‘neq’, 0); 而你选择的独立模型是 extend eq 0 的所有这就是为什么有些模型不会出现在《绑定文档模型》中。
thinkphp5.0.4 回滚测试
测试代码片断
<?php
namespace app\admin\model;
use think\Model;
use think\Db;
class Article extends Model
{
//回滚测试 -----
public function testDel()
{
//echo 'testDel';
// $res = $this->where(array('id' => 1))->delete();
// dump($res);
// 启动事务
Db::startTrans();
try{
//Db::table('think_user')->find(1);
//Db::table('e_article')->delete(1);
$this->where(array('id' => 2))->delete();
$this->where(array('aaaa'=> 4))->delete(); //没有 aaaa字段所有出错启动了回滚
echo 222;
// 提交事务
Db::commit();
} catch (\Exception $e) {
echo 111;
// 回滚事务
Db::rollback();
}
}
}
thinkphp3.2.0 事务机制
如果在使用事务,发现不会回滚或两个表中有一处表回滚而另一个不回滚 就应检查下表的引擎是否为InnoDB
如何保证两表数据完整
- 可以用事务机制
- 使用外键方式_设计模型时可以生成这段SQL 如 navicat 不过我发这种方式强制性比较高,添加时必须一起增加,删除两表相关联的数据必须一起删除。适合单表对单表的关联。 至于一对多表的还待研究
onethink 常量定义位置
Application\Common\Common\function.php
例:
// OneThink常量定义
const ONETHINK_VERSION = '1.0.131218';
const ONETHINK_ADDON_PATH = './Addons/';
css隔行换色
table tr:nth-child(odd) /* odd奇数 even 偶数*/
CSS-关于浮动那些事
情景 当你写 .parent p 写了属性为 float:left;
情景结果 你会发现下面与 .parent同级的感觉也跟着float-left了
分析结果 经过审查元素可以看出 .parent 中的 height为0了, 所以并不是float了,而是由于p float之后就没有占高度, .parent 需要设置高度。
Validate-这TM感觉这么难呢
如何定义错误容器
errorPlacement: function(error, element) {
error.appendTo(element.parent());
}
折叠的表单如何定义验证
注意: validate不会验证display:none 的表单
EG:传送门