我的编程空间,编程开发者的网络收藏夹
学习永远不晚

12-Composer的配置与使用详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

12-Composer的配置与使用详解

1、自定义类与非类的自动加载与测试

# composer> php 包管理工具 ,类似npm1.自己写的类,函数,接口,常量等全局成员,通过自动加载来实现按需加载2.自己写的代码,有哪些依赖,用到了哪些外部成员,我自己知道,可以自己管理3.如果第三方(别人写的),由包管理工具,实现自动加载以及包之间的依赖的处理4.php中用的是`composer`来实现这个功能,类似于Apple Store,手机应用的商店## 1.自动加载器1. `composer init`:交互式创建配置文件 `composer,json`2. 创建成功后,可以在`vendor/`下面有一个`autoload.php`的自动加载器## 2.自动加载我自己写的类> 我自己写的类,依赖关系我自己处理,能不能加载?可以,就用composer就可以> 这个类文件叫composer.json```json{ : {        "classmap":[            "inc/",            "MyClass.php"        ]    }}```每一步写完要执行`composer dumpautoload`使之注册并生效## 3.自动加载我自己写的其它文件> 注意:文件中的成员必须是全局的才可以自动加载和使用> 哪些是全局代码(要用空间访问的):类,接口,trait,函数,常量(变量不是,变量有作用域的)> 配置文件(例如连接数据库的文件):`config/connect.php`> 公共函数库:`lib/helper.php`## 4.PSR-4 自动加载功能### psr(php推荐标准)-41.专用于**类**的自动加载2.`类空间`与`类路径`存在映射关系3.`类名`与`类文件`同名4.支持`空间分级`(顶层空间/子空间/自动查询)管理> 命名空间与类路径名称不一定相同> 类泛指类:class/interface/trait> 注意:对象的模板是类,类的模板是接口## 5.加载第三方的包(只有这个是必须用composer)> 第三方包(也属于全局成员)的依赖关系,由 composer 进行处理1.composer.json:`"require":{...}`,`composer install`2.新建终端输入`composer require 包名`,会自动更新 composer.json3.都会自动创建`composer.lock`锁定当前版本4.`composer create-project topthink/think blog`:通过包来创建完整项目## 6.总结1.自动加载2.依赖管理

2、composer的使用

 2-1 首先进入当前命名空间,然后使用composer指令

 如此可证明composer安装成功

2-2 使用 composer selfupdate可以对composer版本进行升级 

 

2-3 升级后通过 composer -v  查看composer版本

2-4 对于composer来说,有个非常重要的文件,就是它的配置文件 (composer.json)

该文件包含了项目的依赖和其它的一些元数据

3、composer.json 

如果手动创建了composer.json文件,则使用composer install,代表安装在composer.json中声明的第三方类库,且手动创建的composer.json必须包含有效的json格式{}

或者,直接使用命令composer init,初始化一个配置文件。 

我自己写的类或其它文件:"autoload":{

        "classmap":[],

        "files":[],

        "psr-4":{}

第三方的类:"require":{}

classmap:

把类的映射关系声明到classmap中,当我加载或调用一个我当前还没有加载的类的时候,我用classmap告诉项目,从哪里找这个类。写完以后还需使用指令composer dumpautoload 使对应的autoload_classmap.php完成注册(在array里) 

"classmap":[    "inc/",    "MyClass.php"],

在class可以直接引用文件名,这样相当于文件名下的所有类都被加载进来。

也可以只引用某个文件。 

files:

把非类文件的映射关系声明到files中,当我加载或调用一个我当前还没有加载的非类文件的时候,我用files告诉项目,从哪里找这个文件。写完以后还需使用指令composer dumpautoload 使对应的autoload_files.php完成注册(在array里) 

"files":[    "config/connect.php",    "lib/helper.php"],

4、autoload.php 

系统自动给我们写好的配置文件(相当于自己写的自动加载器)

5、 database.php

连接数据库的参数配置

'mysql:dbname=phpedu',    'username'=>'root',    'password'=>'root'];

6、connect.php

连接文件,用于实现数据库的连接 

db = new PDO($dsn,$username,$password);    }    //测试方法    public function select($sql){        return $this->db->query($sql)->fetchAll(PDO::FETCH_ASSOC);    }}

7、 使用Db类

 'mysql:dbname=phpedu',//     'username' => 'root',//     'password' => 'root'// ]);extract(require 'config/database.php');$db = new Db($dsn, $username, $password);$users = $db->select('select * from user');foreach($users as $user){    printf('
%s
',print_r($user,true));}var_dump($db);echo sum(3,4,5,6);

8、任意数量数据求和

9、psr-4

php推荐标准,只能用于类的自动加载,并且要求类空间与类路径存在映射关系, 这一点和手写的自动加载器很像(如果一个类,它的命名空间和路径存在映射关系就可以写一个自动加载器,我们只需要解析一下类的命名空间解析出来里面的内容作为路径,这样就可以把这个类给加载过来了)。

并且类名一定要和类文件名相同。

因为反斜线是转义符,所以必须敲两次 

"psr-4": {    "phpcn\\":"admin/"}

 

 在命令行使用composer dumpautoload完成对psr4的注册

10、psr-4的(命名)空间分级管理

 在admin文件夹下,新建一个文件夹controller,在controller下再新建文件login.php

 然后需要在配置文件中对phpcn\controller空间和Login类的映射进行注册,但是,由于之前我们已经把phpcn作为一个顶层的命名空间路径给注册到admin下面了,那么在admin文件夹下面所有的类文件以及

10、 第三方包与依赖管理

自己写的类或者其它文件可以自己写一个自动加载器而不一定非要用到composer,但是由于第三方包都会遵循composer标准,所以必须要用composer自动加载器,而且很容易进行一些依赖管理。

 

 第一种方法是在composer.json里面的require对象里写入我们要引入的第三方包。

    "require": {        "gregwar/captcha":"1.1.*",    }

*代表最新版本 

 最后在终端使用命令composer install把这个包安装到当前项目

 

 第二种方法是直接在命令终端输入指令直接安装。

这两种方法都会自动创建composer.lock锁定当前版本 

 11、验证并使用第三方包

inline指在页面中怎么用,只需要实例化该类然后在需要的位置引用就行了

build();?>                            

Inline Captcha


Phrase: https://blog.csdn.net/q506174602/article/details/getPhrase(); ?>

 遇到了一个bug:从 float  到 int 的隐式转换会丢失精度

 

需将$x和$y强制转成int型即可 

  

  12、使用composer基于包创建一个项目

在终端使用命令composer create-project topthink/think blog创建项目,最后的blog是给这个项目文件夹的命名,如果没有blog这个参数,那么这个文件名则为think(即包名)。注意,这里用的不是require指令,而是create-project指令

 

 打开这个项目blog可以发现,当前这个项目是一个完整的框架项目,这里面它有自己的composer.json(配置器),有自己的一个包目录(vendor),框架的源码在vender里面有一个topthink

 13、medoo(加速开发的轻量级PHP数据库框架)

在终端使用composer require catfan/medoo指令进行安装

 

 'mysql','host' => 'localhost','database' => 'phpedu','username' => 'root','password' => 'root',];$db =  new Medoo($opt);//查询// $staffs = $db->select('staff','*');// print_r($staffs);//查询(原生PDO操作)// '?'处不能直接传3,因为会当字符串处理,需要做一个绑定$stmt = $db->pdo->prepare('select * from staff limit ?');$stmt->bindValue(1,3,PDO::PARAM_INT);$stmt->execute();printf("
%s
",print_r($stmt->fetchAll(PDO::FETCH_ASSOC),true));

上述运行结果: 

 

Array(    [0] => Array        (            [id] => 1            [name] => admin            [sex] => 1            [email] => admin@php.cn        )    [1] => Array        (            [id] => 2            [name] => 杨过            [sex] => 1            [email] => yangguo@qq.com        )    [2] => Array        (            [id] => 3            [name] => 小龙女            [sex] => 0            [email] => xiaolongnv@qq.com        ))

来源地址:https://blog.csdn.net/q506174602/article/details/129053289

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

12-Composer的配置与使用详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

一文详解Spring AOP的配置与使用

面向切面编程(俗称AOP)提供了一种面向对象编程(俗称OOP)的补充,面向对象编程最核心的单元是类(class),然而面向切面编程最核心的单元是切面(Aspects)。本文就来和大家聊聊AOP的配置与使用,感兴趣的可以了解一下
2022-11-13

详解Go语言中配置文件使用与日志配置

目录项目结构调整配置文件使用日志配置小结接着上一篇的文章构建的项目:Go语学习笔记 - 环境安装、接口测试 只是简单的把GET和POST接口的使用测试了一下。 我还是想按照正常的项目结构调整一下,这篇笔记主要是三个部分:调整项目目录结构、增
2022-06-07

Android中的OpenGL使用配置详解

这篇文章主要为大家介绍了Android中的OpenGL使用配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-02-28

Linux DNS 解析与配置 nslookup使用 与 /etc/resolv.conf文件的配置

Linux DNS 解析与配置 序 当我接收到一批新的服务器时,尝试连接外网,比如访问百度的首页: curl www.baidu.com 发现报错,不能解析正确的主机名。这个其实就是主机在解析主机名时没能正确发现对应的主机的 ip。当
Linux DNS 解析与配置 nslookup使用 与 /etc/resolv.conf文件的配置
2023-12-25

Log4j的配置与使用

本篇内容主要讲解“Log4j的配置与使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Log4j的配置与使用”吧!Log4j简介第1章. Log4j 的优点Log4j是Apache的一个开放源代
2023-06-03

详解log4j.properties的简单配置和使用

本文介绍了详解log4j.properties的简单配置和使用,分享给大家,具体如下:简单log4j.properties配置示例### set log levels ### log4j.rootLogger = INFO , consol
2023-05-30

Vuerouter配置与使用分析讲解

第一次写Vue项目,要用到router.js,看了一下官方文档,还是很懵逼,不知道怎么配置,又去看视频查资料,最后终于搞定了。话不多说,先上代码,我再讲一些要注意的细节
2022-12-23

ubuntu15.10下hadoop2.7.2的安装与配置详解

网上和很多书上都有不少的hadoop在linux系统下的安装教程,但是尝试过的读者会发现,就算是按照这些教程一步步的操作,还是会在某个地方出错,主要原因是版本问题。尤其是书上的版本一般都较老,所以并不建议对着书上的教程来操作,但是可以作为参
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录