• thinkphp 学习笔记


    框架理解:框架和台式电脑玩游戏

    1、组装台式电脑(框架)
    2、安装操作系统(安装框架)
    3、安装网络游戏客户端软件(开发我们的网站编写逻辑代码)
    4、链接上网(把我们的网站项目放到服务器上)
    5、注册账号(注册域名)

    要求:
    1、熟悉php
    2、oop面向对象开发思想
    3、mvc---model(模板--数据库操作模型)、view(视图--可看做一个模板页面)、controller(控制器--)

    以注册为例子

    view(表单)-提交到控制器controller--控制器调用 model处理数据库---model处理好后回馈状态到controller--controller控制显示那个view层。


    thinkphp安装
    1、window无修改
    2、linux安装thinkphp

    common默认调用function.php文件。其他函数名的话要配置。
    __PUBLIC__不是定义的常量,一般值根目录下public文件,可以在其他地方如congfg.php重新定义
    'TMPL_PARSE_STRING' => array(
    '__PUBLIC__' =>__ROOT__.'/'.APP_PATH.'Home/View/Public',
    ),

    1、若要公用conf里面config.php里面数组配置,可在think目录新建conf/config.php文件,在index和admin的conf/config.php里面的return改成数组名=array();之后再用array_merge合并数组,这样think/conf/config.php里面的配置项前后台都可以共用了。

    2、前台/后台自定义的函数可以写在index/admin common目录下,若要能随时调用有两种方法:1、在common文件下新建common.php文件,将函数写入里面,调用时会自动加载。2、common目录下任意命名文件如function.php,但要在conf/config.php里面增加配置项-'LOAD_EXE_FILE'=>'fuction',临时调用可load('@.function');载入文件,再调用里面方法。

    3、加载模板,1、可在根目录下新建public文件夹,将css/js/images文件夹放入,模板index.html放在index/tpl/下面,将index.html里面的css/js/images调用地址修改成对应"__PUBLIC__"(会自动编译成-根目录名/public/)。。。2、模板index.html路径不变,将css/js/images文件夹放在index/tpl/public里面,须在conf/config.php文件里面添加配置信息,'TMPL_PATH_STRING'=>array('__PUBLIC__'=>__ROOT__.'/'.APP_NAME.'/Tpl/public'), 其中APP_NAME已在入口文件index.php文件中定义

    4、$this->display(),默认会自动读取tpl下的index.html,
    (1)若不是index.html文件,如:wish.html,要在display里面传参数进去,$this->display('wish');
    (2)若不是.html文件如:(.htm),要在conf/config.php里面添加配置信息。'TMPL_TEMPLATE_SUFFIX'=>'.htm'。。

    5、U('Index/index',array('uid'=>1)); 表示IndexAction.class.php里面的index函数,(若是当前控制器则前面Index/可以省略)还传递了参数uid=1,第三项为伪静态后缀名,若没有,默认为conf/config.php里面的URL_HTML_SUFFIX对应值,可填写其他。第四项为是否跳转(1或0)。第五项为url是否显示域名(true和false)。

    6、若是服务器不支持伪静态,可在conf/config.php里面修改配置'RUL_MODEL'=>0(动态)1(含index.php)、2(不含index.php)

    7、404错误页面thinkphp---if(error) _404('页面不存在',U('index')); 函数_404()有两个参数,第一个显示信息,第二个跳转到的页面
    8、IS_POST(),可以判断是否为post方式传递过来的,可以排除直接通过url访问。
    8、M('wish')和new Model('wish')效果一样。wish是数据库表名
    9、M('wish')->where(array('id'=>array('gt',0)))->delete();删除id>0的所有数据。lt小于,eq等于。where里面是条件,后面可以接select()、find(),
    例如:查找username为$username的数据。调用find,条件是where里面内容,M('user')->where(array('username'=>$username))->find()。
    要设定排序可以:M('wish')->order('time DESC')->select();
    10、M('wish')->data('$data')->add();往数据库添加数据
    11、地址url跳转$this->redirect('Admin/Index/index');跳转到后台/Index控制器/调用index方法
    11、分配方法
    (1)$this->assign('a',111);
    (2)$this->a=1;
    12.foreach遍历方法。<foreach name='wish' item='v'> </foreach>===<?php foreach($wish as $key=>$v) ?> <?php endforeach?>
    13.输出数组,可以{$arr.id}或{$arr['id']}两种方法。若用(.)输出的全部是数组,可以在配置文件conf/config.php里面声明'TMPL_VAR_IDENTIFY'=>'array'。因为thinkphp在编译{.}时会先判断是否为数组。
    14、thinkphp里面使用系统函数--{:mt_rand(1,5)} ,相当于<?php echo mt_rand(1,5);?>
    15、使用时间函数{$v['time']|date='Y-m-d',###}
    16、若只要一个单入口文件,
    (1)可以index.php定义生成在app,先在conf/config.php里面定义分组和默认分组'APP_GROUP_LIST'=>'Index,Admin','DEFAULT_GROUP'=>'Index',设置默认分组访问首页是默认分组里的首页文件。
    (2)在app/lib/action里面建立两个文件夹admin和index,分别创建IndexAction.class.php文件,
    (3)conf/config.php为共享配置,若要单独配置可以在conf目录下分别创建admin和index文件夹里面再创建config.php文件,
    (4)common/common.php为共享函数库,若要使只能单独使用,可以在common下创建admin和index文件夹,再创建function.php文件即可。
    17、定制错误页面
    1、conf/config.php里面设置'TMPL_EXCEPTION_FILE'=>'./Public/Tpl/error.html',
    2、编写error.html页面,可以通过$e['message']接受404和halt传过来的参数例如:‘页面不存在’。
    2、调用函数_404('页面不存在'), halt('页面不存在'), 都会跳转到定义的错误页面。
    18、//模板路径
    'TMPL_FILE_DEPR'=>'_',
    本来Tpl下面的路径是Tpl/Index/Index现为Tpl/Index,少一层路径,但里面模板命名前要添加Index,Index_index.html,前面Index为控制器名称,后面为模板名称
    19、调用thinkphp里面的extend/org/util/image.class.php类里面的验证码方法buildImageVerify(是静态方法)。
    import('ORG.Util.Image');
    Image::buildImageVerify(4,5,'png',80,25);
    20、自定义session数据库存数,而不是文件形式存放
    (1)配置conf/config.php里面'SESSION_TYPE'=>'Db',
    (2)将thinkphp/extend/driver/session/sessiondb.class.php里面的注释段创立session表格
    若是想自定义session处理类,可以修改配置文件'SESSION_TYPE'=>'xx',另外建立thinkphp/extend/driver/session/sessionxx.class.php文件。
    21、'SESSION_PREFIX'=>'sess_',若是设置了session前缀(相当于设置了session的一维数组),那么调用session['sess_']['']
    22、thinkphp引用css和js文件可以用<css file='__PUBLIC__/css/public.css'>和<js file='__PUBLIC__/css/public.js'>
    23、统计查询数量$count = M('wish')->count(); ===select count(*) from wish
    24、分页调用
    import('ORG.Util.Page');
    $count = M('wish')->count(); //统计数据总条数
    $limit = $page->firstRow.','.$page->listRow; //可以获得 起始项:每页条数
    $wish = M('wish')->order('time DESC')->limit($limit)->select();
    $this->wish = $wish;
    $this->page = $page->show();
    $this->display('biao');
    html文档里面调用{$page}即可。
    25、若是主键,可以M('wish')->delete($id);来删除,不然M('wish')->where('id'=>$id))->delete();


    赋值分配方法两种:
    $this->assign('a',111);
    $this->b = 33;

    参数里面使用函数:
    {$vo.time|date='Y-m-d H:i:s',###}
    //###表示 将前面$vo.time 放到 ‘###’位置
    使用 (.)点语法,tp会先判断是数组还是对象,一般都是数组,若确定都是数组,为提高编译速度,可以配置参数‘TEMP_VAR_IDENTIFY’=>'array'
    普通调用函数:{:mt_rand(1,5)}
    模板里面可以使用<script> var handle = '{:U("handle")}'</script>可以解析出地址。但在其他js文件里面不能解析。

    26.getField 获取单个字段,若是在第二个参数加上 true,可以返回数组
    27.<if condition=''></if> 在其他标签内的话不能使用{}和.语法(如{$app.id})
    28.使用D(‘表格’),会实例化model里面对应验证和补充
    如 $_validate = array();
    $_auto = array();


    28.M('user') 基础模型
    D('user') 单表格模型
    D('userrelation')
    视图模型 解决 has_one 和 belongs_to 类型 关联查询,查询多个表格里面字段,一对一关联
    关联模型 ,对应多个表格,多对多关联,

    视频21 15分钟
    1、node 删除 编辑功能 完善

    1064:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 [ SQL语句 ] : DELETE FROM `llc_access` WHERE ( role_id= )

    疑问:
    1、save和add的区别
    一个是添加一个修改

    1、wamp如何设置 url_model = 2 ,为什么不rewrite重新地址。

    2、E('')方法
    2/data($data)---data()方法怎么用??

    display() show() 方法。


    window.onload = function(){
    setTimeout(function(){
    window.location.href="<?php echo __APP__;?>";
    },3000)
    }
    </script>

    <?php echo $e['message'];?>
    <P>页面将在3秒后跳转</P>

    <?php echo __APP__;?>什么意思??

    var_export($array,true);输出数组字符串,合法php代码

    $d = $form->create();
    使用create方法会先接受数据,再对数据进行验证和补充
    如果使用的事 M(数据库),怎么验证和补充???

    28.append 或before 添加出来的元素选择器没用
    <td class='v'></td>
    对 class=‘v’有js运行,但是后面append的不生效。why???

  • 相关阅读:
    植物园偶遇一直喵
    植物园偶遇一直喵
    美食篇
    美食篇
    端午节路过南站
    端午节路过南站
    黄山云海
    黄山云海
    Android (1)
    树和树算法(1)
  • 原文地址:https://www.cnblogs.com/lola/p/8030388.html
Copyright © 2020-2023  润新知