zoukankan      html  css  js  c++  java
  • ThinkPHP个人学习总结大全

    一、THINKPHP的一般开发流程

    1. 创建数据库和数据表
    2. 项目命名并创建项目入口文件
    3. 完成项目配置
    4. 创建控制器类
    5. 创建模型类
    6. 创建模板文件
    7. 运行和调试

    二、关于模板

    1、执行方法并输出返回值:

    格式:{:function(…)}

    例如,输出U方法的返回值:

    {:U('User/insert')}

    编译后的PHP代码是

    <?php echo U('User/insert');?>

    2、执行方法但不输出:

    格式:{~function(…)}

    例如,调用say_hello函数:

    {~say_hello('ThinkPHP')}

    编译后的PHP代码是:

    <?php say_hello('ThinkPHP');?>

    三、关于模板和ACTION

    这是Action向模板中输出的数据

    如果我们在Action中赋值了一个name模板变量:

    $name = 'ThinkPHP';

    $this->assign('name',$name);

    使用内置的模板引擎输出变量,只需要在模版文件使用:

    {$name}


     

    这是模型向模板中输出的数据

    果我们需要把一个用户数据对象赋值给模板变量:

    $User = M('name');

    $user = $User->find(1);

    $this->assign('user',$user);

    也就是说$user其实是一个数组变量,我们可以使用下面的方式来输出相关的值:

    {$user['name']}// 输出用户的名称

    {$user['email']} // 输出用户的email地址

    如果$user是一个对象而不是数组的话,

    $User = M('name');

    $User->find(1);

    $this->assign('user',$User);

    可以使用下面的方式输出相关的属性值:

    {$user:name}// 输出用户的名称

    {$user:email} // 输出用户的email地址

    四、简单经典的操作数据库

    <?php
    Class HelloAction extends Action
    {
    public function show()
    {
    $newdb=M("manager");//以数据库的表名为参数建一个模型
    $newdb->find(1);//实例化这个模型,参数为id值(数据库默认id为key,并且唯一自增)
    echo "数据库取得的消息为:".$newdb->username;//取得这个模型某个字段的数据
    }
    }
    五、关于model
    自己的模型类创建和使用
     

    基础模型类的使用

    $User = new CommonModel('User','think_','db_config');

    第三个连接信息参数可以使用DSN配置或者数组配置,甚至可以支持配置参数。关于这个参数的使用我们会在数据库连接部分详细描述。

    用M方法实现的话,上面的方法可以写成:

    $User = M('CommonModel:User','think_','db_config');

    这是带参数的实例化模型类。

    六、关于thinkphp上传文件

    FileAction.class.php

    <?php
    class FileAction extends Action{
        function index(){
            $file=M('file');
            $list=$file->select();
            $this->assign('filelist',$list);
            $this->display();   
        }    
       
        function upload(){
            //文件上传地址提交给他,并且上传完成之后返回一个信息,让其写入数据库   
            if(empty($_FILES)){
                $this->error('必须选择上传文件');   
            }else{
                $a=$this->up();
                if(isset($a)){
                    //写入数据库的自定义c方法
                    if($this->c($a)){
                        $this->success('上传成功');   
                    }
                    else{
                        $this->error('写入数据库失败');   
                    }
                }else{
                    $this-error('上传文件异常,请与系统管理员联系');   
                }
            }
        }
       
        private function c($data){
            $file=M('file');
            $num       '0';
            for($i = 0; $i < count($data)-1; $i++) {
                $data['filename']=$data[$i]['savename'];           
               if( $file->data($data)->add())
               {
                   $num++;
               }
            }
            if($num==count($data)-1)
            {
                return true;   
            }else
            {
                return false;
            }
           
        }
       
        private function up(){
            //完成与thinkphp相关的,文件上传类的调用   
            import('@.Org.UploadFile');//将上传类UploadFile.class.php拷到Lib/Org文件夹下
            $upload=new UploadFile();
            $upload->maxSize='1000000';//默认为-1,不限制上传大小
            $upload->savePath='./Public/Upload/';//保存路径建议与主文件平级目录或者平级目录的子目录来保存   
            $upload->saveRule=uniqid;//上传文件的文件名保存规则
            $upload->uploadReplace=true;//如果存在同名文件是否进行覆盖
            $upload->allowExts=array('jpg','jpeg','png','gif');//准许上传的文件类型
            $upload->allowTypes=array('image/png','image/jpg','image/jpeg','image/gif');//检测mime类型
            $upload->thumb=true;//是否开启图片文件缩略图
            $upload->thumbMaxWidth='300,500';
            $upload->thumbMaxHeight='200,400';
            $upload->thumbPrefix='s_,m_';//缩略图文件前缀
            $upload->thumbRemoveOrigin=1;//如果生成缩略图,是否删除原图
           
            if($upload->upload()){
                $info=$upload->getUploadFileInfo();
                return $info;
            }else{
                $this->error($upload->getErrorMsg());//专门用来获取上传的错误信息的   
              
        }
       
    }
    ?>

    模板文件index.html

    <html>

    <body>

    <volist name="filelist" id="vo">
      小图:<img src="__PUBLIC__/upload/s_{$vo['filename']}" /><br />
      大图:<img src="__PUBLIC__/upload/m_{$vo['filename']}" /><br />
    </volist>

    <form action="__URL__/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file[]" /><br />
        <input type="file" name="file[]" /><br />
        <input type="file" name="file[]" /><br />
        <input type="submit" value="上传" />
    </form>

    </body>
    </html>

    七、关于thinkPHP的路由

    <?php
    Class HelloAction extends Action
    {
    public function show()
    {
    echo '<h1>show</h1>';
    }
    public function index()
    {
    echo '<h1>index</h1>';
    }
    protected function _empty($name)
    {
    echo '<h1>use empty</h1><h3>'.$name.'</h3>';
    }
    }
    控制器位于www/ensleep/lib/action/HelloAction.class.php
    输入localhost/ensleep/index.php/Hello    |使用Index方法
    输入localhost/ensleep/index.php/Hello/index    |使用Index方法
    输入localhost/ensleep/index.php/Hello/show    |使用show方法
    输入localhost/ensleep/index.php/Hello/test    使用_empty('test')
    Hello必须要大写,否则出错。
  • 相关阅读:
    Linux监控端口与性能分析的
    对大数据简单生态的部分认知随笔
    致敬那些年对nginx踩过的坑
    面试中一些比较尴尬的问题
    硬盘的接口有哪几种
    硬盘的逻辑结构
    Oracle数据库的备份与恢复还原笔记
    Linux安装Mysql5.7.29
    [转]为什么会有OPTION请求?
    图解HTTP(5-6章节)---阅后笔记
  • 原文地址:https://www.cnblogs.com/ensleep/p/2924179.html
Copyright © 2011-2022 走看看