工具&利器

PHP开发|服务端开发|代码|我的笔记_需要整理

============== 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:传送门

发表评论