目录

0x00 composer安装步骤:

0x01 用composer将thinkphp框架下载到服务器的公开目录

0x03 composer详解

0x03 用Composer下载依赖

0x04 将自己的类上传到packagist

0x05 助手函数

0x06 tp系统常量

0x07 tp配置

0x08 获取配置值的方法:

0x09 扩展配置


0x00 composer安装步骤:

https://jingyan.baidu.com/article/eae078275907861fec548582.html

https://www.kancloud.cn/manual/thinkphp5/118006

0x01 用composer将thinkphp框架下载到服务器的公开目录

https://www.kancloud.cn/manual/thinkphp6_0/1037481

安装好后,可以尝试访问public下的index.php文件

https://www.kancloud.cn/manual/thinkphp5/118006

0x03 composer详解

composer中文文档: https://docs.phpcomposer.com/

首先,composer不是一个包管理工具,它是依赖管理工具(依赖=包libaries+项目projects(框架))。所谓依赖,就是指你做的项目需要依赖的东西,所以,composer不会再全局安装任何东西,在命令行使用composer前,你需要cd到你做的项目的目录下,然后,通过以下命令,来将一些包或者框架安装到你的项目目录下。

用composer实现自动加载:

第一步 生成composer.json文件

composer.json是composer的配置文件(对自己项目的描述)

composer init 命令生成composer.json

  1. Package name:vender/name:你的网名/包的名字
  2. Description:对包的描述
  3. Author:网名 <邮箱>
  4. Minimum Stability:stable
  5. Package Type:如果是库就填Library,如果是框架就填project
  6. License:协议,一般填MIT

以上详细解释,见中文文档的架构部分。

第二步 转中国镜像

https://pkg.phpcomposer.com/

第三步 生成vendor目录

composer install

将会自动在当前文件夹下生成vendor目录

如何实现php文件的自动加载呢?

例如:现在你在demo文件夹下有一个common目录,里面有一个function.php。你想让index.php自动加载该文件。

首先,你需要在composer.json文件夹中添加这么一段代码:

注意:这里填的相对路径都是相对于composer.json来说的。

然后,只需要在index.php中引入vendor/autoload.php即可。这样,当你需要在index.php中使用composer.json中添加好的某个文件的时候,vendor/autoload.php就会为你自动加载。

最后,为了让修改好的composer.json生效,需要在命令行执行 composer dump 重启。

那么如何实现类的自动加载呢?

首先在demo文件夹,下创建一个app文件夹,专门用来存写好的类。然后在app文件夹下创建一个home文件夹(用来存网站前台的代码)和一个admin文件夹(用来存网站后台的代码)。然后在home文件夹下 创建一个文件indexController.php(类的命名规范:xxxController.php)

然后,在composer.json中添加如下代码:

然后,composer dump

最后,在index.php中使用该类即可,注意:在之前加上命名空间

0x03 用Composer下载依赖

依赖商店:https://packagist.org/

然后该包就会被下载到vendor文件夹中,然后在composer.json中自动加入require词条

发短信的包:alidayu

packagist只是将包展示出来,包的代码存在github上面。

0x04 将自己的类上传到packagist

首先,在github上创建仓库,然后将仓库clone到本地,然后进入到本地文件夹,composer init,然后在composer.json中设置好自动加载,然后add commit push将类上传到github(不用上传vendor目录)

0x02 thinkphp目录结构

https://www.kancloud.cn/manual/thinkphp6_0/1037483

www  WEB部署目录(或者子目录)
├─app           应用目录
│  ├─controller      控制器目录
│  ├─model           模型目录
│  ├─ ...            更多类库目录
│  │
│  ├─common.php         公共函数文件
│  └─event.php          事件定义文件
│
├─config                配置目录
│  ├─app.php            应用配置
│  ├─cache.php          缓存配置
│  ├─console.php        控制台配置
│  ├─cookie.php         Cookie配置
│  ├─database.php       数据库配置
│  ├─filesystem.php     文件磁盘配置
│  ├─lang.php           多语言配置
│  ├─log.php            日志配置
│  ├─middleware.php     中间件配置
│  ├─route.php          URL和路由配置
│  ├─session.php        Session配置
│  ├─trace.php          Trace配置
│  └─view.php           视图配置
│
├─view            视图目录
├─route                 路由定义目录
│  ├─route.php          路由定义文件
│  └─ ...
│
├─public                WEB目录(对外访问目录)
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─extend                扩展类库目录
├─runtime               应用的运行时目录(可写,可定制)
├─vendor                Composer类库目录
├─.example.env          环境变量示例文件
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件

app 应用目录 你写的代码就存在这里

public:文件夹下:

robots.txt 是用来拒绝爬虫的协议

前端的js,css代码都放在static文件夹下

runtime:网站的所有缓存文件都在runtime下

0x05 助手函数

进入application下的index/controller/index.php

function index()中return就是输出,原生的return是没有输出的功能的。

用于调试的助手函数:

1.dump('xxx') 浏览器友好的变量输出

相当于var_dump()+<pre></pre>

2.halt(变量) 输出变量 并中断脚本,本质上封装了dump 和一个抛出异常,可以理解为dump +exit;

其他常用的助手函数:

1.exception('异常消息') 用于抛出异常,可以用try{}catch(\Exception $e){ $this->error($e->getMessage())} 来捕获异常

2.url(路由地址,变量) 生成url

例如

url('/admin/index',['id'=>$id,'status'=>$sta])

url('/admin/index','id=$id&status=$sta')

在模板使用助手函数{:助手函数名()} 例如 {:url('/admin/index')}

3.json():对变量进行json编码,相当于原生的json_encode:

https://www.php.net/manual/zh/function.json-encode.php

<?php
namespace app\index\controller;class Index
{public function index(){$arr =["a","b","c"];return json($arr);}
}

以上代码相当于原生的:echo json_encode($arr);

助手函数如何实现?

thinkphp/helper.php

thinkphp/library/Debug.php

0x06 tp系统常量

thinkphp/base.php中定义了许多系统常量,我们在application/index/controller/index.php中可以拿过来直接用:

比较常用的tp系统常量

  1. 目录分隔符(可以兼容windows和linux):define('DS', DIRECTORY_SEPARATOR)
  2. 指向框架的核心目录thinkphp:defined('THINK_PATH') or define('THINK_PATH', __DIR__ . DS)
  3. 指向thinkphp/library:define('LIB_PATH', THINK_PATH . 'library' . DS);
  4. 指向thinkphp/library/think:define('CORE_PATH', LIB_PATH . 'think' . DS);
  5. 指向thinkphp/library/traits:define('TRAIT_PATH', LIB_PATH . 'traits' . DS);
  6. 指向application目录:defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']) . DS)
  7. 指向application目录:defined('CONF_PATH') or define('CONF_PATH', APP_PATH); // 配置文件目 为什么同一个目录要定义两个名字呢?因为在application文件夹下有个config.php,想要得到该文件的路径,可以直接:CONF_PATH/config.php
  8. 指向tp框架的根目录tp5.0.11:defined('ROOT_PATH') or define('ROOT_PATH', dirname(realpath(APP_PATH)) . DS);
  9. 指向extend目录:EXTEND_PATH
  10. 指向vendor目录:VENDOR_PATH

0x07 tp配置

application/config.php 应用配置文件:

开发阶段打开以下两个选项,上线后关闭:

打开错误调试功能

打开trace:可以追踪整个代码执行的流程和时间等

0x08 获取配置值的方法:

1.助手函数法:

config(配置的键) 返回键对应的值

<?php
namespace app\index\controller;class Index
{public function index(){return config('app_namespace');}
}

2.调用Config::get("配置的键")

助手函数config源码:

if (!function_exists('config')) {/*** 获取和设置配置参数* @param string|array  $name 参数名* @param mixed         $value 参数值* @param string        $range 作用域* @return mixed*/function config($name = '', $value = null, $range = ''){if (is_null($value) && is_string($name)) {return 0 === strpos($name, '?') ? Config::has(substr($name, 1), $range) : Config::get($name, $range);} else {return Config::set($name, $value, $range);}}
}

可以看到获取配置的值根本上调用的是Config::get()函数,显而易见,Config是一个类,get是该类的一个静态方法。tp5框架中类都在thinkphp/Library/think下,寻找对应的Config.php

    public static function get($name = null, $range = ''){$range = $range ?: self::$range;// 无参数时获取所有if (empty($name) && isset(self::$config[$range])) {return self::$config[$range];}// 非二级配置时直接返回if (!strpos($name, '.')) {$name = strtolower($name);return isset(self::$config[$range][$name]) ? self::$config[$range][$name] : null;}// 二维数组设置和获取支持$name    = explode('.', $name, 2);$name[0] = strtolower($name[0]);if (!isset(self::$config[$range][$name[0]])) {// 动态载入额外配置$module = Request::instance()->module();$file   = CONF_PATH . ($module ? $module . DS : '') . 'extra' . DS . $name[0] . CONF_EXT;is_file($file) && self::load($file, $name[0]);}return isset(self::$config[$range][$name[0]][$name[1]]) ?self::$config[$range][$name[0]][$name[1]] :null;

所以,我们可以直接:

<?php
namespace app\index\controller;
use think\Config;class Index
{public function index(){return Config::get('app_namespace');}
}

注意:要先use think\Config,原因有两点

1.Config类本来就在think\Config这个命名空间下,所以要use

2.tp5自动加载需要根据命名空间来自动加载,打开thinkphp/library/think/Loader.php,可以看到

 // 注册命名空间定义self::addNamespace(['think'    => LIB_PATH . 'think' . DS,'behavior' => LIB_PATH . 'behavior' . DS,'traits'   => LIB_PATH . 'traits' . DS,]);

think命名空间对应的是tp5/thinkphp/library/think/

0x09 扩展配置

如何添加自己的配置文件:

在application下创建一个文件夹extra,然后在extra下创建xxx.php(xxx为配置文件名),xxx.php的格式如下:

<?php
return ['MY_APP_ID'=>'123456',];
?>

如何读取呢?

config('配置文件名.MY_APP_ID');

也可以在根目录tp5下创建一个总的配置文件:.env文件,打开.env 这样写:

如果要获取配置的值:

<?php
namespace app\index\controller;
use think\Env;class Index
{public function index(){return Env::get('ALIPAY.ALI_ID');}
}

也可以再弄一个extra下的配置文件,在配置文件的数组中Env::get(),然后在index文件中config()

ThinkPHP5.0.11Day01: composer 、助手函数、配置文件相关推荐

  1. tp3的单字母函数在thinkphp5.0改为助手函数简介

    thinkphp3.2中一些快捷大写单字母函数,比如 U(),I() , C(),M() , D() , W()等,这些在thinkphp5 中已经不再使用,而是改用助手函数来代替: S=>ca ...

  2. PHP:ThinkPHP5.0下载安装和各种配置

    1.ThinkPHP5.0简介 composer包管理工具 ThinkPHP3.0不兼容 php环境: 测试 开发 线上 url路由 请求响应 模板视图 MVC 一种设计典范 分离 model 模型 ...

  3. ThinkPHP 5.0常用助手函数

    ThinkPHP 5.0常用助手函数 总结thinkphp手册,以及自己学习中用到的关于tp5的助手函数 首先看看手册给我们提供的助手函数目录: 下面是学习中自己常用到的助手函数 一.url() 一般 ...

  4. yii2.0奥秘窥探:助手函数

    欢迎php技术加入laravel技术交流群 :784030154 在中文手册'助手函数'只提了三个函数,分别是url .html.array.具体查看https://www.yiichina.com/ ...

  5. php 助手函数,助手函数 · ThinkPHP5.1完全开发手册 · 看云

    >[info] 在5.1版本中,大部分的助手函数都可以归结为一个函数`app()`,因为5.1全面采用容器管理类的实例,而`app()`函数又是容器的"管家". ## 助手函 ...

  6. thinkphp 助手函数url不生成https_thinkphp5.0 URL 地址生成

    有两个方法 使用系统类 使用助手函数 use think\Url; //输出首页地址 Url::build('index/index/index'); //这个也是输出首页地址 url('index/ ...

  7. Composer安装ThinkPHP5.0

    1.  安装Composer 参考:https://blog.csdn.net/weixin_40393909/article/details/86978990 2.  安装tp5.1: 5.1版本开 ...

  8. php网站目录结构图,thinkPHP5.0站点目录结构-我心向阳

    一.ThinkPHP5.0的目录结构 安装后(或者下载后的压缩文件解压后)可以看到下面的目录结构: tp5 ├─application 应用目录 ├─extend 扩展类库目录(可定义) ├─publ ...

  9. thinkphp5.0验证码使用

    如果没有安装验证码类,可在composer.json 文件的require里面添加 "topthink/think-captcha":"1.*",然后compo ...

最新文章

  1. httpd启动不能加载模块
  2. LoadRunner的Socket脚本关联小技巧
  3. VS.NET2005中的WEBPART初步(一)
  4. 启明云端技术社区之星--张梦玉
  5. Condition - Java多线程编程
  6. 网速正常,一打开IE总是卡很久
  7. matlab的diray在哪,matlab笔记
  8. 为此计算机上的所有用户安装此加载项,activex 安装给所有计算机用户
  9. matlab如何创建callback函数_MATLAB作图实例:46:显示复杂的三维对象
  10. 剑指_复杂链表的复制(Python)
  11. informix sybase数据库下载地址
  12. Leetcode Problem108
  13. mysql 批量插入(记录帖)
  14. 计算机专业毕业顶岗实习周记,计算机专业毕业顶岗实习周记10篇
  15. 烟台移动dns网关_如何设置移动宽带DNS和IP地址
  16. 下载新浪android SDK
  17. Java 实现图片转换为ICO以及多种格式图片之间转换
  18. Timing Constraint介绍-Design Compiler(三)
  19. android+小米文件管理器源码,小米开源文件管理器MiCodeFileExplorer-源码研究(1)-2个模型Model...
  20. Learning to Rank 简介

热门文章

  1. Shiro反序列化漏洞【详细解析】
  2. Android Studio 使用Profiler时App崩溃闪退
  3. MySql存储IP地址(兼容ipv4和ipv6)
  4. 华中科大三个大学生创新团队的成长启示
  5. 百分点科技助力中国环境监测总站用数据底座赋能智慧监测
  6. libtool的知识
  7. 压缩文件zip怎么查看注释呢,市场上一些破软件不好用啊,我有秘诀
  8. 渲染02-内置Uniform
  9. 使用js转换数据库时间类型
  10. 知网、万方paperfree 查重的区别