開發composer包

一、初始化(生成composer.json文件)

composer init
#輸入你要創建的composer包項目命名空間
Package name (<vendor>/<name>) [root/tiny-laravel]:?#haveyb/tiny-laravel
#輸入composer包的描述
Description []:#this is a tiny laravel haveyb
#輸入作者信息。前面是作者名稱,后面用<>包住郵箱地址
Author [, n to skip]:?#haveyb <haveyb@163.com>
#輸入版本穩定性,stable, RC, beta, alpha, dev
Minimum Stability []:?#dev
#填寫項目類型
Package Type (e.g. library, project, metapackage, composer-plugin) []:#library
#填寫授權類型
License []:?#MIT
#填寫依賴信息,如果有需要依賴的包,則填寫在這里,沒有就直接回車。如果需要多個,則重復以上兩個步驟
Define your dependencies.Would you like to define your dependencies (require) interactively [yes]?#示例:
Would you like to define your dependencies (require) interactively [yes]? yes
Search for a package: php
Enter the version constraint to require (or leave blank to use the latest version): >=7.1.3#如果還有其他依賴,則繼續填寫,否則直接回車
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]? no
{"name": "haveyb/tiny-laravel","description": "this is a tiny laravel haveyb","type": "library","require": {"php": ">=7.1.3"},"license": "MIT","authors": [{"name": "haveyb","email": "haveyb@163.com"}],"minimum-stability": "dev"
}
Do you confirm generation [yes]? yes
#是否現在安裝依賴
Would you like to install dependencies now [yes]? no

 

配置psr-4自動加載

#在composer.json中添加如下代碼
"autoload":{"psr-4":{"haveyb\\TinyLaravel\\":"./src/"}
},

?

添加上面代碼后的composer.json文件

{"name": "haveyb/tiny-laravel","description": "this is a tiny laravel haveyb","type": "library","require": {"php": ">=7.1"},"license": "MIT","authors": [{"name": "haveyb","email": "haveyb@163.com"}],"minimum-stability": "dev","autoload":{"psr-4":{"haveyb\\TinyLaravel\\":"./src/"}}
}

 
生成自動加載文件

composer update#也可以使用composer install命令,只不過composer update更常用

 
執行該命令后,就會發現,目錄下生成了一些文件,這些文件就是自動加載所用的文件,如圖:

?

 

?


二、開發composer包并測試

?

1、創建目錄結構

在包目錄下創建src目錄,我這里的包目錄是在 /data/tiny-laravel

cd /data/tiny-laravel
mkdir src
cd src
mkdir database
touch MySQL.php

 
?2、向 MySQL.php 文件添加如下測試內容
?

<?php
declare(strict_types = 1);
namespace haveyb\TinyLaravel\database;class MySQL
{/*** 測試用例** @return string* @author cyf*/public function getDatabase() : string{return 'this is get database function';}
}

 
3、在項目中實例化這個類,并訪問這個方法,如果成功,說明composer包開發成功,之后根據需求定制開發即可。

我這里為了方便,直接在網站根目錄訪問的index.php。 

index.php

<?php
require './vendor/autoload.php';
use haveyb\TinyLaravel\database\MySQL;$mysql = new MySQL();
echo $mysql->getDatabase();

結果是this is get database function,說明定義并加載成功,之后可以根據需求定制開發,然后在項目中實例化后引用相應方法即可。
?

注意:如果出錯,著重檢查命名空間和引入是否正確和規范。

 
?4、結語

現在,我們可以開始定制開發了,就像我們使用的阿里巴巴的 oss composer包一樣。


具體包的加載過程,這里不細說,不過有一個文件,大家應該要知道,位于 tiny-laravel/vendor/composer/autoload_psr4.php。

它長這個樣子:

<?php// autoload_psr4.php @generated by Composer$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);return array('haveyb\\TinyLaravel\\' => array($baseDir . '/src'),'yii\\gii\\' => array($vendorDir . '/yiisoft/yii2-gii/src'),
);

 

三、發布composer到packagist


 

 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282098.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282098.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282098.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux本地yum源配置以及使用yum源安裝gcc編譯環境

本文檔是圖文安裝本地yum源的教程&#xff0c;以安裝gcc編譯環境為例。 適用范圍&#xff1a;所有的cetos,紅帽,fedroa版本 適用人群&#xff1a;有一點linux基礎的小白 范例系統版本&#xff1a;CentOS Linux release 7.3.1611 (Core) 范例環境&#xff1a;vmware 虛擬機 安裝…

word如何設置上標形式_如何在word中設置特殊頁碼

獲取更多業界資訊和深度好文● 點擊藍字關注我們 ●在日常工作中&#xff0c;我們編輯的word文檔經常需要設置頁碼&#xff0c;但有時文檔的第一頁是封面&#xff0c;第二頁才是正文&#xff0c;或者第二頁是目錄&#xff0c;第三頁才是正文&#xff0c;如下圖所示&#xff0c;…

[cf797c]Minimal string(貪心+模擬)

題意&#xff1a; 給出了字符串s的內容&#xff0c;字符串t&#xff0c;u初始默認為空&#xff0c;允許做兩種操作&#xff1a; 1、把s字符串第一個字符轉移到t字符串最后 2、把t字符串最后一個字符轉移到u字符串最后 最后要求s、t字符串都為空&#xff0c;問u字符串字典序最小…

發布composer包到 Packagist,并設置自動同步(從github到Packagist)

一、發布composer包 1、將我們寫好的項目包發布到github上 這一步不贅述&#xff0c;應該都會。 但是需要注意的是&#xff0c;我們一定要為我們的項目包打上tag之后再提交&#xff0c;否則 我們composer require時可能會報錯 Could not find a version of package。 # 設置…

教你在CorelDRAW中導入位圖

在CorelDRAW軟件中不能直接打開位圖圖像&#xff0c;在實際操作中&#xff0c;用戶需要使用導入位圖圖像的方法進行操作。導入位圖圖像時&#xff0c;可以導入整幅圖像&#xff0c;也可以在導入的過程中對圖像進行裁剪&#xff0c;或重新取樣圖像&#xff0c;導入整幅位圖圖像時…

.NET 6 中將 ASP.NET Core 注冊成 Windows Service

前言使用 Visual Studio 中的 Worker Service項目模板:我們很容易創建出 Windows Service&#xff1a;IHost host Host.CreateDefaultBuilder(args).UseWindowsService().ConfigureServices(services >{services.AddHostedService<Worker>();}).Build();await host.R…

19.12 添加自定義監控項目 配置郵件告警 測試告警

9月12日任務19.12 添加自定義監控項目19.13/19.14 配置郵件告警19.15 測試告警19.16 不發郵件的問題處理19.12 添加自定義監控項目需求&#xff1a;監控某臺web的80端口連接數&#xff0c;并出圖兩步&#xff1a;1&#xff09;zabbix監控中心創建監控項目&#xff1b;2&#xf…

wab框架

http協議 一、http簡介 1.HTTP是一個基于TCP/IP通信協議來傳遞數據&#xff08;HTML 文件, 圖片文件, 查詢結果等&#xff09;。 2.HTTP是一個屬于應用層的面向對象的協議&#xff0c;由于其簡捷、快速的方式&#xff0c;適用于分布式超媒體信息系統。它于1990年提出&#xff0…

c++ 二維矩陣 轉vector_Python線性代數學習筆記——矩陣的基本運算和基本性質,實現矩陣的基本運算...

當學習完矩陣的定義以后&#xff0c;我們來學習矩陣的基本運算&#xff0c;與基本性質矩陣的基本運算&#xff1a;矩陣的加法&#xff0c;每一個對應元素相加&#xff0c;對應結果的矩陣例子&#xff1a;矩陣A和矩陣B表示的是同學上學期和下學期的課程的成績&#xff0c;兩個矩…

android 4.4以上能夠實現的沉浸式狀態欄效果

僅僅有android4.4以及以上的版本號才支持狀態欄沉浸效果 先把程序執行在4.4下面的手機上,看下效果: 在4.4以上的效果: 當然圖片也是能夠作為背景的.效果: 代碼: if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {Window window getWindow();window.setFlags(Wind…

為abp vnext生成C#客戶端給非abp第三方net程序使用

abp vnext提供了動態C#API客戶端和靜態C#API客戶端來調用abp項目的接口&#xff0c;但是有局限性&#xff1b;要使用動態C#API客戶端的項目必須也是ABP vnext的項目。靜態C#API客戶端也依賴abp的包&#xff0c;如下圖為的靜態客戶端依賴于 Volo.Abp.DependencyInjection、Volo.…

項目中引入composer包

假如在云服務器上&#xff0c;項目根目錄在 /data/shop&#xff0c;則 示例&#xff1a; cd /data/shop響應的結果可能會有兩種: 1、第一種是直接require成功 示例&#xff1a; composer require haveyb/tiny-laravel #響應結果 ./composer.json has been created Loading …

圓的擬合

1.三點求圓心和半徑 https://blog.csdn.net/liyuanbhu/article/details/52891868 2.最小二乘擬合圓轉載于:https://www.cnblogs.com/yhlx125/p/9671641.html

printf()函數不能直接輸出string類型

因為string不是c語言的內置數據&#xff0c;所以直接printf輸出string類型的是辦不到的。 要這樣輸出: printf("%s\n",a.c_str()); 舉例: #include<bits/stdc.h> using namespace std; int main(){string a"人生";printf("%s\n",a.c_str()…

C#項目代碼規范

目的 1.方便代碼的交流和維護。 2.不影響編碼的效率&#xff0c;不與大眾習慣沖突。 3.使代碼更美觀、閱讀更方便。 4.使代碼的邏輯更清晰、更易于理解。 在C#中通常使用的兩種編碼方式如下 Camel(駝峰式)&#xff1a; 大小寫形式&#xff0d;除了第一個單詞&#xff0c;所有單…

.NET MAUI實戰 FolderPicker

1.概要最近在遷移 GeneralUpdate.Tool的時候需要用到文件夾選擇&#xff0c;在MAUI中可以使用FolderPicker進行選擇。注意&#xff0c;和上篇文章的文件選擇不一樣。因為在.NET MAUI中目前還沒有傻瓜式直接可用的FolderPicker供開發者使用所以需要自己動手做一些修改。完整示例…

h5外賣源碼php_校園食堂外賣APP走紅 更多APP定制開發上一品威客網

近日&#xff0c;西安一高校推出了一款校園食堂外賣APP走紅網絡。該APP涵蓋學校食堂的所有飯菜&#xff0c;并可給該校的師生提供校園食堂飯菜外賣服務。飯菜價格與食堂統一&#xff0c;且僅供該校內的師生使用。 目前開發校園外賣訂餐系統可謂是一個較熱門的創業項目&#xff…

Python面向對象學習 1 (什么是面向對象,面向對象的應用場景,待更新)

程序設計的三種基本結構&#xff1a; 面向對象&#xff0c;面向過程&#xff0c;函數式編程1&#xff0c;什么是面向對象編程 面向對象編程是一種編程方式&#xff0c;此編程方式的落地需要使用 “類” 和 “對象” 來實現&#xff0c;所以&#xff0c;面向對象編程其實就是對 …

iPhone屏幕大小和適配建議(包括 XR XS XSM )

//4 ----:{{0, 0}, {320, 480}} //5、5s ----:{{0, 0}, {320, 568}} //6、6s、7、8 ----:{{0, 0}, {375, 667}} //6P、7P、8P ----:{{0, 0}, {414, 736}} 復制代碼X 系列 //X ----:{{0, 0}, {375, 812}} //XR ----:{{0, 0}, {414, 896}} //XS ----:{{0, 0}, {375, 812}} //XSM …

go語言中的方法method

package main;import "fmt"//重新定義一個類型 //為該INT類型擴展方法 type INT int;type A struct {name string; }type B struct {name string; }func main() {a : A{};a.Print();//指針傳遞a.Print2();fmt.Println(a);//同上(*A).Print2(&a);b : B{};b.Print(…