zoukankan      html  css  js  c++  java
  • ThinkPHP最简教程

    这里不讲原理,只讲操作。

    这里不说MVC,只说目录(文件夹)结构。

    假设Apache Http Server、PHP、MySql都已经安装完毕并已配置完毕,能够输出phpinfo()。

    框架是什么?

    下载

    安装AMP

    安装ThinkPHP

    运行第一个页面

      http://localhost

      http://127.0.0.1

      等

      这里的http://localhost,实际上是通过某个方法实现的页面的跳转,它等于http://localhost/index/index/index,等于http://localhost/index.php?controller=index&action=index

      看到最后那个链接形式,是不是比较熟悉了?

      但是这种链接方式属于动态链接,一个问题是不好记不清晰,另一个问题是搜索引擎不喜欢记录这样的链接,它们更倾向于收集静态页面。

      那么ThinkPHP就把动态链接,通过一些方法,转为了看起来像静态的链接。用的什么方法实现的这个效果?暂时不必关心。

      所以,http://localhost/index/index/index这个链接从左到右三个Index的意思是,在网站根目录下,有个index文件夹【一级】,下面有个controller文件夹(这个没有也没必要在链接上显示出来,以后还会有别的目录),下面有个index.html文件【二级】,

      文件里有个类(这个类和文件属于同一个级别,并且名称必须一致),类里面有个Index函数【三级】,这个函数没有参数,所以后面没有了,如果有参数,那么从第三个index开始,往后全是参数的键值对儿。

      比如:http://localhost/index/index/index/a/11/b/22/c/33,一目了然,不解释了。

      5.0不再支持普通的URL访问方式,所以下面的访问是无效的,你会发现无论输入什么,访问的都是默认的控制器和操作

      http://localhost/index.php?controller=TestController&action=index

    运行第二个页面

      在tp5.0applicationindexcontroller目录下,复制index.php,改成index2.php,注意!打开这个文件,把里面的类名(即Class后面的”index“)改成Index2,无论你改成什么,要保持和文件名一致。否则会报错,报控制器找不到的错,类似这样:

    控制器不存在:appindexcontrollerIndex2

    官方推荐的视频教程里并没有强调这一点,如果照他们说的,只改文件名,是打不开那个页面的。

      如果你改完文件名和类名,回到浏览器,F5刷新,发现没什么作用,依然报错,并且确定没有其它问题的情况下,按Ctrl+F5,强制清缓存刷新试一下。

    连接数据库

      用PHP的大部分项目都是要操作数据库的。

      要连数据库,有以下几个事儿要做:

      PHP安装目录下找到php.ini

        查找extension_dir,把等号后面的路径改为绝对路径,像这样: extension_dir = "F:/php/ext"

        查找extension=php_pdo_mysql.dll,把这行释放出来,即把最前面的分号删除,使之有效。

        因为PHP5.6已经内置了PDO,所以不必再单独引用PHP_PDO.dll了。

     

    URL访问规则

      如果applicationconfig.php文件中的url_convert设置为true时

      控制器命名为:Abcde时,访问abcde、Abcde、ABCDE均有效

      控制器命名为:AbCde时,访问abcde、Abcde、AbCde、ABCDE均无效,此时要用Ab_Cde来访问。

      也就是说,如果你的名字中有大写,那么就要在每个大写的前面加下划线。

      即,ThinkPHP以一个名字中的第二个大写来判断是否加入下划线,对驼峰命名法进行了特别的处理。

      下面是这种转换的核心代码:

        /**
         * 字符串命名风格转换
         * type 0 将 Java 风格转换为 C 的风格 1 将 C 风格转换为 Java 的风格
         * @access public
         * @param  string  $name    字符串
         * @param  integer $type    转换类型
         * @param  bool    $ucfirst 首字母是否大写(驼峰规则)
         * @return string
         */
        public static function parseName($name, $type = 0, $ucfirst = true)
        {
            if ($type) {
                $name = preg_replace_callback('/_([a-zA-Z])/', function ($match) {
                    return strtoupper($match[1]);
                }, $name);
    
                return $ucfirst ? ucfirst($name) : lcfirst($name);
            }
    
            return strtolower(trim(preg_replace("/[A-Z]/", "_\0", $name), "_"));
        }

    不使用.htaccess会怎样?  

    一个奇怪的现象

    某个控制器和类名,理论上应当一致,并且建议首字母应当大写。如果文件名和类名的首字母改成小写,再去访问之前的URL,并不会马上报错,保持刷新状态一直刷新,过了大约20秒,报错。再改回首字母大写,也不会马上报错,再过一会儿,才报错。

    这是为什么?像是因为缓存,又在runtime目录下没有发现什么特别的东西。

    为什么?

    隐藏入口文件

    先决条件:

    1、httpd.conf配置文件中加载mod_rewrite模块。

      去掉LoadModule rewrite_module modules/mod_rewrite.so前面的分号


    2、把AllowOverride None改成owOverride All

    TP5.0默认的入口文件是tp5.0publicindex.php,如果不希望被扫描,可以改成其它名字,例如ttt.index。同时要注意修改同级目录下的.htaccess文件中的最后一行的正则表达式,index.php改成ttt.php。

    定义路由

     这里属于锦上添加的部分,暂时不细说。

    不过,你们有没有想过,“路由”这两个字,是什么意思?我第一次接触时,就是来自计算机领域,知道它在表达什么,但是不知道这个词的来历,这种表达方式,似乎有点历史的样子,似乎不应该来自计算机领域。

    后经查询,果然,它来自市政建设领域,如下:

    路由(市政工程术语)
    管线的“路由”一般可以概述为管线的起点到通往每个目的地的路径,即管线的走向位置

    管线的“路由”一般可以概述为管线的起点到通往每个目的地的路径,即管线的走向位置,一般依据规划红线由当地市政或规划部门所确定,是管道施工的主要依据。 同时“路由”也属于管线设计过程中的一个环节。管线产生出来的过程一般包括选线路、确定路由、出图、施工等程序。
    其中,“确定路由”准确的叫法应该称为确定“管道走向”,是配管专业在基本确定设备布置后,开展详细配管,前进行配管研究时出的一种图。图中主要表示大管道的走向和初步位置。

    这里的“由”,是经由的由,表示从哪走。网络领域中的“路由”,借用了市政领域“找路”这个方案的术语,即路由。

  • 相关阅读:
    ed新手使用进阶全功略
    directx的媒体对象
    Makefile详解
    Bourne Shell及shell编程(1)
    Win32CompileMSYSNew
    GNU hello学习笔记(1)——autoconf和automake
    VC++中通过MultiByteToWideChar将string|char*转换为wstring|wchar_t*
    使用 Bash shell 脚本进行功能测试[转]
    添加VLC模块
    libvlc外部api的简单整理
  • 原文地址:https://www.cnblogs.com/Sabre/p/9051351.html
Copyright © 2011-2022 走看看