Pharapi open source interface framework
Pronunciation: Pai framework, official website: https://www.phalapi.net/
PhalApi is a lightweight open source interface framework for PHP, which is committed to the rapid development of interface services. It supports protocols such as HTTP/SOAP/RPC and can be used to build interfaces / micro services / RESTful interfaces / Web Services. It promises to be permanently free and can be used for commercial purposes.
It supports automatic generation of interface documents, automatic parameter verification, automatic generation of unit test code, automatic possession of CURD data interface and automatic installation program, making interface development simpler, more efficient and more professional.
Screenshot of PhalApi official website:
Online example
Using pharapi open source interface framework, you can quickly develop and write your API interface, and automatically generate online interface documents.
Online example:
- Online interface documentation: http://demo.phalapi.net/docs.php
- Interface details document (take the default interface as an example): http://demo.phalapi.net/docs.php?service=App.Site.Index&detail=1&type=fold
- Default interface service: http://demo.phalapi.net/?s=App.Site.Index
Pharapi will automatically generate online interface documents in real time according to the parameter configuration and code comments of the interface you write. The effect of the interface list page is similar to the following:
Pharapi also supports online interface testing, requesting sample descriptions, generating offline HTML interface documents, and real-time updates. The effect of interface document details page is similar as follows:
express setup
One click installation of composer
Using the command of composer to create a project can realize one click installation.
$ composer create-project phalapi/phalapi
Warm tip: for the use of Composer, please refer to Composer Chinese website / packgist China full volume image.
Manual download and installation
Alternatively, it can be installed manually. After downloading and decompressing the Git project code, update the optional composer, that is:
$ composer update
deploy
Nginx configuration
If using Nginx, refer to the following configuration.
server { listen 80; server_name dev.phalapi.net; # Set the root directory to the public directory root /path/to/phalapi/public; charset utf-8; location / { index index.php; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; # Select the appropriate communication mode according to the current environment # fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
When configuring, you need to set the website root directory to the public directory. After saving the configuration, restart nginx.
Warm tip: it is recommended to point the access root path to / path/to/phalapi/public.
Database configuration
How to use MySQL database, refer to modify/ config/dbs.php database configuration.
return array( /** * DB Database server cluster */ 'servers' => array( 'db_master' => array( // Server tag / database identify 'type' => 'mysql', // Database type. Only mysql, sqlserver / database type are supported temporarily 'host' => '127.0.0.1', // Database domain name / database host 'name' => 'phalapi', // database name 'user' => 'root', // Database user name / database user 'password' => '', // database password 'port' => 3306, // database port 'charset' => 'UTF8', // database charset 'pdo_attr_string' => false, // Database query results use strings uniformly. true is yes, false is No 'driver_options' => array( // Connection option configuration during PDO initialization // For more configurations, please refer to the official documentation: https://www.php.net/manual/zh/pdo.constants.php ), ), ), // More code omitted );
Finally, you need to add write permissions to the runtime directory.
Operation and use
Call interface
In pharapi, you can specify the interface service to be called through the service parameter (the short name is the s parameter). For example, access the default interface service.
http://dev.phalapi.net/?s=App.Site.Index
The result output after the interface request is similar to the following:
{ "ret": 200, "data": { "title": "Hello PhalApi", "version": "2.4.2", "time": 1501079142 }, "msg": "" }
The PHP code corresponding to the execution is in/ src/app/Api/Site.php file, the source code fragment is as follows:
<?php namespace App\Api; use PhalApi\Api; /** * Default interface service class * @author: dogstar <chanzonghuang@gmail.com> 2014-10-04 */ class Site extends Api { public function getRules() { return array( 'index' => array( 'username' => array('name' => 'username', 'default' => 'PhalApi', 'desc' => 'user name'), ), ); } /** * Default interface service * @desc Default interface service, which is executed when no interface service is specified * @return string title title * @return string content content * @return string version Version, format: X.X.X * @return int time Current timestamp * @exception 400 Illegal request, parameter passing error */ public function index() { return array( 'title' => 'Hello ' . $this->username, 'version' => PHALAPI_VERSION, 'time' => $_SERVER['REQUEST_TIME'], ); } }
The screenshot of the operation effect is as follows:
The partial screenshot of the automatically generated interface document details page is as follows:
translate
Modification/ public/init.php file to set the current language.
// Translation language pack settings - Simplified Chinese \PhalApi\SL('zh_cn'); // Setting language to English \PhalApi\SL('en');
A picture shows you how to use phalapi 2 x
PhalApi development documentation
The elegant and detailed development documents specially prepared for PHPer can basically find the answers you want in the documents. Please see: phalapi 2 X development documentation, http://docs.phalapi.net/#/v2.0/ .
The document is written in markdown, and the screenshot of the document page is as follows:
Development document outline:
PhalApi 2.x Development documentation preface preface How to upgrade PhalApi? 1, Rapid development 1.1 Download and install 1.2 function Hello World 1.3 How to request interface services 1.4 Interface response and online debugging 1.5 Api Interface layer 1.6 DataApi Universal data interface 1.7 Domain Domain layer and ADM pattern 1.8 Model Data layer and database operation 1.9 DataModel Data base class 1.10 unit testing 1.11 Automatic loading and PSR-4 1.12 Interface documentation 1.13 initialization 2, Database 2.1 Database connection 2.2 Database and NotORM 2.3 Database usage and query 2.4 Database database and table division strategy 2.5 Connect to multiple databases 2.6 Print and save SQL sentence 2.7 Customize your Model Base class 3, Advanced topics 3.1 Interface parameters 3.2 to configure 3.3 journal 3.4 cache 3.5 filter(Interface signature) 3.6 COOKIE 3.7 encryption 3.8 internationalization 3.9 CURL request 3.10 Tools and miscellaneous 3.11 DI Service summary 3.12 Extended class library 3.13 SDK Use of packages 3.14 Script command 3.15 MQ queue 3.16 error handling
2020 video tutorial
Starting from station B, lesson 1 ~ Lesson 11 are equipped with the outline of video knowledge points of each lesson.
http://docs.phalapi.net/#/v2.0/video_1
Video course:
PhalApi 2020 Video tutorial Lesson one B The station starts, and the 2020 video tutorial begins! Lesson 2 video tutorial - Download and install Lesson 3 video tutorial - Hello World Lesson 4 video tutorial - How to request interface services Lesson 5 video tutorial - Interface response and online debugging Lesson 6 video tutorial - Api Interface layer Lesson 7 video tutorial - Domain Domain business layer and ADM Mode interpretation Lesson 8 video tutorial - Model Data layer and database connection Lesson 9 video tutorial - Test driven development and PHPUnit Lesson 10 video tutorial - Automatic loading and PSR-4 Lesson 11 video tutorial - Interface documentation Video tutorial - Ten minute experience PhalApi Pro,Give Way PHP Interface development is more interesting! Video tutorial - Tea shop application practice
Related books
E-book: getting to know PhalApi: exploring the skills of interface service development
Author: Huang Zen
Turing community link:
https://www.ituring.com.cn/book/2405
Outline:
Dedication preface Part I exploration Chapter 1 meeting PhalApi Chapter 2 basic introduction Chapter 3 Advanced Topics Chapter 4 is not just coding Part II project cases Chapter 5 new entrepreneurial projects Chapter 6 rewriting historical legacy projects Chapter 7 an extreme project The third part goes further Chapter 8 PhalApi Perfect interpretation Chapter 9 how to effectively design the interface framework Chapter 10 open source appendix A Interface service document template thank
E-book: good quality! PHP enterprise system development
Author: Huang Zen
Turing community link:
https://www.ituring.com.cn/book/2664
Outline:
Recommendation order preface Dedication Part I redefining project development Chapter 1 essence of software development Chapter 2 selecting a high starting point Chapter 3 release your code to the world Part II PHP Advanced programming Chapter 4 return to the original ecology Chapter 5 PHPUnit New solution of unit test Part III PHP Enterprise system development Chapter 6 core basic module design Chapter 7 large website development paradigm Chapter 8 high availability interface service system Chapter 9 ultimate management background system Chapter 10 hidden mission planning system The fourth part is the pursuit of excellence Chapter 11 how to become a star employee Chapter 12 winning in role transformation thank
Subproject
If you are interested in the internal implementation, source code and technical architecture of the PhalApi open source framework, you can view the following subprojects.
- Phalapi / kernel framework kernel
- phalapi/notorm database package
PhalApi 2. The system architecture of version x is as follows:
PhalApi composer extension
- Phalapi / authauthauth permission extension
- Phalapi / cli extended class library
- Phalapi / fast routefastroute fast route
- Phalapi aliyun ossphalapi OSS alicloud OSS package
- phalapi/PHPMailer email sending based on PHPMailer
- phalapi/qiniu qiniu cloud storage interface call
- phalapi/qrcodePhalApi QR code extension
- phalapi/pinyinPhalApi 2.x Pinyin extension
- phalapi/jwt JWT extension based on PhalApi2
- Chenall / phalapi Weixin wechat extension
- phalapi/wechatmini wechat applet extension
- Phalapi / Ding com BOT nail enterprise internal webhook robot extension
- phalapi-pay supports WeChat payment and Alipay payment
Warm tip: the above extensions need to be installed through composer before use. For more use and development of extended class libraries, please refer to the document: PhalApi framework extended class library: http://docs.phalapi.net/#/v2.0/library .
PhalApi application plug-in
- Operation platform plug-in
- Application user plug-in
- Encryption and decryption plug-in
- Alipay plug in
- Tea shop wechat applet application
- Online interface document theme pack
Warm tip: the difference between application plug-ins and composer extensions is that application plug-ins are more granular and have more specific functions. They may not only have databases, interfaces, interfaces, but also cooperate with other terminals, and are not subject to the specification constraints of composer. They are the development method independently invented and designed by PhalApi. For more information, please refer to the third party application plug-in development tutorial: http://docs.phalapi.net/#/v2.0/how-to-dev-plugin.
Technical products developed based on PhalApi
The following products use the PhalApi open source framework and are officially self-developed products. Individuals / teams / enterprises are welcome to use them.
Interface master - build your interface open platform immediately (original name: PhalApi Professional Edition)
Product official website: http://pro.phalapi.net/
Guochuang cloud - backend low code development platform
Product official website: http://yesapi.cn/
YesDev collaboration cloud - collaborate all your projects online
Product official website: https://www.yesdev.cn/
PhalApi 2. Perfect interpretation of X version
2.x system architecture
It is mainly divided into three layers:
- In the application layer of phalapi/phalapi project, you can use phalapi/phalapi to build microservices, interface systems, RESTful, web services, etc.
- Extended class library extended class library refers to optional and reusable components or class libraries, which can be directly integrated and used, maintained and shared by developers, corresponding to the original phalapi library project.
- The core framework is divided into two parts: the core part of PhalApi, kernal, and the optimized notorm.
Among them, the respective composer and github projects are:
project | composer | github |
phalapi/phalapi | phalapi/phalapi | phalapi/phalapi |
Extended class library | It is maintained and shared by the majority of developers. composer recommends that you register uniformly with phalapi. | It is maintained and shared by developers, and the source code can be maintained in their Github warehouse. |
Core framework | phalapi/kernal | phalapi/kernal |
UML static structure diagram of the core part of the framework
PhalApi 2. The UML static structure diagram of the core framework of version x, HD version is as follows:
Firstly, the PhalApi\PhalApi class in the green part is the access portal of the whole interface system, which is the key to the use of the project application system and client. For the relevant calling code, you can refer to the implementation code fragment of the unified entry file.
$pai = new \PhalApi\PhalApi(); $pai->response()->output();
Only two lines of code are needed to complete the request response to the interface service.
Secondly, there are three layers of Api, Domain and Model in the yellow part, that is, the ADM layered architecture. This part needs developers' attention, because it is also the part that specific project development needs to be implemented by itself.
Finally, the red part of DI dependency injection is the core of the whole framework. Not only in the core framework, but also in the project application.
Core execution flow sequence diagram
PhalApi 2.x version of the core execution flow sequence diagram, and 1 The X version is basically the same. It can be seen that no matter how the technology is upgraded, the initial core timing process of phalapi remains dynamic. The only change is the name of each class.
Community communication
Send framework pharapi communication group QQ group (1165 people)
Group No.: 421032344
Send framework - PhalApi communication group 2-QQ group (830 people)
Group No.: 459352221
PhalApi technology exchange group - wechat group (83 people)
Add micro signal: dogstarhuang into the group
Code warehouse
Gitee code cloud - pharapi open source interface framework (1.7k Star)
Code link:
https://gitee.com/dogstar/PhalApi
GitHub - pharapi open source interface framework (1.4 Star)
Code link:
https://github.com/phalapi/phalapi
Version update
Phalapi version 2.17.2 was released and updated in July 2021.
Phalapi version 2.17.2
[BUG fix]
1. For SQL records, only part of the necessary parameters are extracted to avoid all records, and to avoid recording sensitive information such as passwords to log files
2. Translation and DataApi parameter description supplement
3. The exception prompt information when the DataModel calls a method that does not exist, and remove the redundant dollar symbol
4. Judge and adjust the online interface document template to avoid warning
For more historical version update journals, please see:
http://docs.phalapi.net/#/v2.0/changelog