• thinkphp-3


    有两种创建项目的方式:
    一是用多个单入口文件, 一个入口文件对应着一个项目, 如前台/后台/会员中心等
    二是用一个单入口, 创建项目分组

    对于有多个入口文件的 情况, 配置文件的共享问题?
    不管是前台还是后台项目, 都首先是去访问自己的配置文件, 如果没有设置项, 然后是访问thinkphp的配置文件
    为了解决前台/后台等多个项目共享一个配置, 避免 同样的配置 在前台/后台等多个项目中重复书写, 有两种方案:
    一是: 分别在前台和后台的配置文件中互相包含, 这样的话,实际上, 前台配置文件和后台配置文件, 就完全相同了. 实际上两个配置
    文件既完全相同, 重复书写了, 而且更严重的是, 这样的配置,根本就不合理. 而且会出错...

    二是, 分别保持前台和后台的 各自独立的 原来的 内容不同的 各自使用的 配置文件, 然后 另外创建一个配置文件, 把各个模块项目 要共享的/ 公用的配置项
    写在这个共享的配置文件中, 最后, 让前台和后台的配置文件, 都 "包含 / 合并/ return array_merge(include('共享的配置文件'), $config);

    ***注意, 最最重要的是: 所有项目的配置 文件 "包含其他 配置文件或 其他 共享的配置文件" 的时候, include 的路径 要写成 "相对于 包含当前配置文件的那个项目所对应的单入口文件 而言, 如index.php, admin.php" 而不是 相对于 当前这个配置文件 ***

    /* 前台项目 配置文件 */
    <?php
    
    $config = array(
    	//'配置项'=>'配置值'
    	'name'=>'obama',
    );
    
    return array_merge(include('./Conf/config.php'),$config);  // 跟前台index.php同级的Conf配置目录下的公用配置文件
    ?>
    

    输出变量的时候, 推荐使用dump()函数, 而不是var_dump(), 因为前者会格式化输出, 会自动换行, 呈树形目录 结构的形式输出!

    在项目中, 创建自己 定义的函数, 并加载进来?

    1. 在项目的Common文件夹下, 创建common.php文件, 在该文件中书写自定义函数;
      这时, thinkphp就可以 "自动" 加载, 也就是你在 "当前" 项目中就可以直接使用了
    2. 在项目的Common文件夹下, 创建任意名称的php文件,如 function.php

    但是在上面 的第二中情况下, 就不能自动加载, 要手动加载:

    一是: 在对应项目的config.php文件中添加配置项: 'LOAD_EXT_FILE' => 'function' // 注意只写文件名, 不要加扩展名
    二是: 或者用 load方法临时加载: load('@.function'); // 这里的@就是指当前项目的Common文件夹, .function也不要加扩展名.

    注意, dump是thinkphp中的函数, 而不是php的原生的函数!

    ========================================

    thinkphp的逻辑组织?

    在总的 "根目录" 下:

    入口文件: 对应着一个项目, 如index.php 就对应着Index项目, admin.php 就对应着 Admin项目;

    在每一个项目下, 就只有 一个概念了 : 控制器 / 方法.

    你可以指定: m=控制器名称 & a=方法; 也可以 直接输入 控制器和方法名称: ...../think/index.php/ index(控制器)/index(方法)

    thinkphp的 控制器方法 对应的 模板文件?

    控制器Index/ 方法Show()  对应的模板文件:
    
    Tpl模板文件夹下的 "文件夹 Index" , 下的 "show.html"文件.
    
    即: 
    控制器 Foo,  <-----> Tpl下的 同名文件夹 Foo
    
    方法:bar(),  <----->                  Foo下的同名html文件: bar.html
    
    // 方法名都是小写!
    

    关于thinkphp下的css和js目录的引入?

    在本地/本机上写代码的时候, 可以使用绝对路径, 如: c:/folder, 也可以使用相对路径, 如: ../folder/foo/
    但是, 在服务器上 部署代码的时候, 由于服务器对本地目录的屏蔽, 你是看不到服务器机器上的真正目录的,

    而是从 服务器网站根目录下开始 的, 你只能看到网站的根目录, 而且是用 "/斜杠" 来表示这个站点根目录的! 所有的站点
    内容都是从 这个 根目录 开始的. 这个 "/" 就代表localhost, 就代表 服务器的域名, 如: www.baidu.com

    css 和js是放在 根目录下的 Public文件夹下的,
    在 模板文件中, 使用 _ _ PUBLIC _ _ 就可以表示 /站点根目录/Public.
    但是, __PUBLIC__并不是一个常量, 而且只能在 模板文件中 使用有效, 其他地方都无效! 是一个模板替换.

    也就是说, thinkphp有很多的 内部约成和规定, 而这一切都是为了 开发的快捷和方便!

    关于Css/Js/Image放到Public的写法

    有两种方法:

    • 通常, 对于前台, 就放在根目录下的Public文件夹下, 在模板中, 直接可以使用 __PUBLIC__来引用 /think/Public这个文件夹.

    • 那么对于后台, 为了区别, 就可以把 后台的Css/Js/Image文件夹, 放在后台项目的 Tpl目录下的Public文件夹中. 这时候, 在后台的config.php中, 就要做
      一些配置才行:

      在后台的config.php文件中添加配置项:
      'TMPL_PARSE_STRING' => array(
          '__PUBLIC__' => __ROOT__.'/'.APP_NAME.'/Tpl/Public',  
          ),
      
      // 这里要注意, Public 后面不能跟斜线, 
      //  因为一般在对应的模板 文件中, 包含 css文件时, 都会在 __PUBLIC__的后面加斜线, 
      // 所以, 根据 字符串替换的原理, 如果这里再加上 斜线, 就会重复了.两个斜线, 而出错!
      
      

    要临时禁止显示错误?
    不用去修改 错误报告的级别,
    直接去设置 错误是否显示就可以了! ini_set('display_errors', 0); 最好用0, 不用off

    APP_NAME只是thinkphp中定义的全局常量, 并不是php的原生 常量

    php定义的原生常量 , 好像 都没有 最后 的 路径分隔符 : /

    如__ROOT__ ,

  • 相关阅读:
    C# -- HttpWebRequest 和 HttpWebResponse 的使用
    C# -- Lambda 表达式的使用
    ASP.NET -- WebForm -- HttpRequest类的方法和属性
    ASP.NET -- WebForm -- HttpResponse 类的方法和属性
    C# -- 索引器、枚举类型
    C#设计模式之七桥接模式(Bridge Pattern)【结构型】
    C#设计模式之六适配器模式(Adapter Pattern)【结构型】
    C#设计模式之五原型模式(Prototype Pattern)【创建型】
    C#设计模式之四建造者模式(Builder Pattern)【创建型】
    C#设计模式之三抽象工厂模式(AbstractFactory)【创建型】
  • 原文地址:https://www.cnblogs.com/bkylee/p/5286597.html
Copyright © 2020-2023  润新知