zoukankan      html  css  js  c++  java
  • Thinkphp5.1 导入第三方包的问题

    一般刚接触tp5.1的,会很不适应,虽然版本号只是比5.0多了0.1,但是差别挺大,废弃了不少方法,官方的教程又很简单,很多东西没说全,在此鄙视一下框架作者,最起码体谅一下小白嘛,搞了好多天才把5.1使用vendor里面引入第三方包的问题搞好,惨啊,在此分享,让后来的小白别走太多弯路。

    一、在thinkPHP 5.1.X新版取消了Loader::import方法以及import和vendor助手函数,推荐全面采用命名空间方式的类以及自动加载机制,如果必须使用请直接改为php内置的include或者require语法。(抱怨一下,这种问题要在官方文档里面说明一下嘛,鄙视作者,整5.1的时候这些方法挨个试了一遍,又是搜又是看教程结果全部卵用,无奈。)

    原来的import("Vendor.Classes.PHPExcel.IOFactory");或Vendor('phpoffice.phpexcel.Classes.PHPExcel.IOFactory');方法已经不再使用。

    二,在thinkPHP 5.1.X中的处理方法,必须使用composer方式安装第三方模块。否则在vendor目录下的内容无法自动加载。也就是到了这一版必须用Composer,方法加载去掉了,其实这样也好,比较靠拢主流框架,比如laravel,如果用好TP5.1在转向laravel很容易,而且用工具管理包,也符合现在的开发潮流,像node各种工具包管理,在此虽然刚接触很不爽,但是支持吧。

    怎么安装Composer 就不说了,教程一堆,反正不成功再搜再搞,就差不多了。

    三,是否能够成功在TP5.1中引入第三方包,命名空间太重要了,必须明白到底是咋回事,单单明白namespace还不行,use的用法和规则也缺一不可,我当时就只了解了namespace,什么大空间,子空间,依然不成功,是因为use用的不对。

    四,说了require_once加namespace方式,接下来说namespace和use 方式。

    第三方包

    namespace gmars
    bac;
    use gmars
    estedsetsNestedSets;
    use thinkDb;
    use thinkException;
    
    class Rbac
    {
        /**

     -------------------------下面自己写的类,上面是rbac包类----------------------------------------------------  

    namespace appindexController;
    
    use gmars
    bac;      //use的是第三方包的namespace名字
    
    
        class Login extends Controller
       {
            public function login(){
    
        //实例化
        $rbacObj=new rbacRbac();    //就是use的名字最后一个字符rbac 加上你要实例化的类名。

    五,这里还要说一下composer,如果你项目有报错,找不到包什么的可以去看项目跟目录里面的composer.json这里是你导入第三方类的表,看看有没有这个包在里面

     "require": {
            "php": ">=5.6.0",
            "topthink/framework": "5.1.*",
            "gmars/tp5-rbac":"dev-master",
            "gmars/tp5-nestedsets": "dev-master",
            "topthink/think-captcha": "^2.0",
            "topthink/think-migration":"^1.0",
            "phpmailer/phpmailer": "^6.0"
        
        },

    在此也就是说在TP5.1中,导入第三方包在vendor文件夹中,先用compose require 加包成功,再先use对,在new,才能成功,在前面不声明use是不能加载第三方包的,还有一路就是进vendor文件夹中找到你加包的文件夹,里面src里面php文件.拷贝到extend文件下新建文件夹中,统一管理也可以,有一个开发者就是这样干,不用use 直接反斜杠 新建文件夹你要的类,但是为了清楚明白还是use比较好。

    在你composer require tp5-rbac 出现下载进度,就说明在安装中,如果没有有错误信息,就直接在compose.json文件中require大括号里面手动加上 "gmars/tp5-rbac":"dev-master", 然后命令composer update ,就会安装了,这个很多教程都有说,其实用composer刚开始觉得挺高大上,其实就是json文件,composer里php类,运用php自动加载类的机制实现的,没什么太魔幻的。正确使用namespace和use后,就很方便了。


    原文链接:https://blog.csdn.net/qq_18248719/article/details/81805310

  • 相关阅读:
    window10 安装docker
    el-select value是数字不回显
    JS垃圾回收机制(转)
    mybatis 动态sql (转载)
    mybatis SQL 语句构建器
    vue 面试总结
    Stream解析(转载)
    JVM参数
    SourceTree 版本跳过bitbucket注册方法
    win10配置git SSH
  • 原文地址:https://www.cnblogs.com/bushui/p/11997079.html
Copyright © 2011-2022 走看看