ä¸ãå®è£ è¦æ±
PHP >= 7.3
Swoole PHP æ©å± >= 4.5ï¼å¹¶å ³éäº Short Name
OpenSSL PHP æ©å±
JSON PHP æ©å±
PDO PHP æ©å± ï¼å¦éè¦ä½¿ç¨å° MySQL 客æ·ç«¯ï¼
Redis PHP æ©å± ï¼å¦éè¦ä½¿ç¨å° Redis 客æ·ç«¯ï¼
Protobuf PHP æ©å± ï¼å¦éè¦ä½¿ç¨å° gRPC æå¡ç«¯æ客æ·ç«¯ï¼
äºãéè¿composerå®è£
composer create-project hyperf/hyperf-skeleton
ä¸ãç®å½ç»æ
bin æ§è¡hyperfå¯å¨èæ¬
app æ§å¶å¨ãå¼å¸¸ãçå¬å¨ã模å
config é
ç½®æ件
runtime è¿è¡æ¶äº§ççæ件
åãé 置路ç±
é 置路ç±çæ¹å¼æ两ç§æ¹å¼
第ä¸ç§ï¼/config/routes.php ä¸è¿è¡é ç½®ã
第äºç§ï¼ä½¿ç¨æ³¨è§£è¿è¡é ç½®ï¼è¿éå主éç¨æ³¨è§£æ¹å¼è¿è¡é ç½®ã
å¨/app/controller/ç®å½ä¸å建æ§å¶å¨InfoController.phpï¼å¹¶å¡«åå¦ä¸ä»£ç
<?php
declare(strict_types=1);
namespace App\Controller;
use Hyperf\HttpServer\Annotation\AutoController;
/**
* @AutoController()
*/
class InfoController extends AbstractController
{
public function index(){
return ['name'=>"hyperf"];
}
}
/**
* è¿éå°±ä¸è¦å¤å¶äºï¼ï¼ï¼ï¼ï¼ï¼
* @AutoController 为ç»å¤§å¤æ°ç®åç访é®åºæ¯æä¾è·¯ç±ç»å®æ¯æï¼ä½¿ç¨ @AutoController æ¶å Hyperf ä¼èªå¨è§£ææå¨ç±»*
* çææ public æ¹æ³å¹¶æä¾ GET å POST 两ç§è¯·æ±æ¹å¼ã
* ä½¿ç¨ @AutoController 注解æ¶é use Hyperf\HttpServer\Annotation\AutoController; å½å空é´ï¼
*/
驼峰å½åçæ§å¶å¨ï¼ä¼èªå¨è½¬å为è形路ç±ï¼ä»¥ä¸ä¸ºæ§å¶å¨ä¸å®é è·¯ç±ç对åºå ³ç³»ç¤ºä¾ï¼
æ§å¶å¨ 注解 访é®è·¯ç±
æ§å¶å¨ | 注解 | 访é®è·¯ç± |
---|---|---|
MyDataController | @AutoController() | /my_data/index |
MyDataController | @AutoController() | /mydata/index |
MyDataController | @AutoController(prefix="/data") | /data/index |
äºãå¯å¨æå¡
å¨æ ¹ç®å½ä¸è¿è¡ php bin/hyperf.php ï¼è®¿é® http://127.0.0.1:9501/info/index å³å¯ï¼127.0.0.1ä¿®æ¹æä½ èªå·±çipå°åï¼
å ãé¾æ¥æ°æ®åº
1ãå¨æ ¹ç®å½ï¼æ¾å°.env æ件ï¼ä¿®æ¹æ°æ®åºè¿æ¥ä¿¡æ¯
DB_DRIVER=mysql
DB_HOST=192.168.37.128 //æ°æ®åºå°å
DB_PORT=3306 //端å£
DB_DATABASE=demo //æ°æ®åºå称
DB_USERNAME=root //è´¦æ·
DB_PASSWORD=root //å¯ç
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
DB_PREFIX= //表åç¼
2ãæå¼æ§å¶å¨æ·»å å¦ä¸ä»£ç
注æï¼ä½¿ç¨Db::tableçæ¶åä¸å®è¦å¯¼å
¥ use Hyperf\DbConnection\Db;
注æï¼ä½¿ç¨Db::tableçæ¶åä¸å®è¦å¯¼å
¥ use Hyperf\DbConnection\Db;
注æï¼ä½¿ç¨Db::tableçæ¶åä¸å®è¦å¯¼å
¥ use Hyperf\DbConnection\Db;
$row = Db::table('user')->first(); //æ¥è¯¢ä¸æ¡
$users = Db::select('SELECT * FROM user;'); //æ¥è¯¢ææ
$id = Db::table('user')->value('id'); //è·åå个å¼
$users = Db::table('user')->where([
['status', '=', '1'],
['gender', '=', '1'],
])->get(); //ææ¡ä»¶æ¥è¯¢
æ´å¤æ¥è¯¢æ¹å¼å¯åè å®ç½ï¼https://hyperf.wiki/2.1/#/zh-cn/db/quick-start
ä¸ãè§å¾
1ãå®è£ è§å¾ç»ä»¶ï¼composer require hyperf/view:~2.0.0 //å主使ç¨çæ¯hyperf 2.0.0çæ¬çï¼ææå®è£ å ¶ä»ç»ä»¶ä¹è¦åhyperfçæ¬ä¸è´ï¼å¦åæ æ³å®è£ æåï¼ï¼ï¼ï¼ï¼ï¼
2ãè·ç®å½æ§è¡å¦ä¸å½ä»¤ï¼ä¼å¨/config/autoloadä¸çæviewé ç½®æ件
php bin/hyperf.php vendor:publish hyperf/view
3ãå®è£ task
composer require hyperf/task:~2.0.0
4ãé ç½®éæèµæºåtask
æå¼/config/autoload/server.phpï¼æ·»å å¦ä¸ä»£ç
'settings' => [
...å
¶ä»é
ç½®ä¸ç¨ä¿®æ¹
// Task Worker æ°éï¼æ ¹æ®æ¨çæå¡å¨é
ç½®èé
ç½®éå½çæ°é
'task_worker_num' => 8,
// å 为 `Task` 主è¦å¤çæ æ³åç¨åçæ¹æ³ï¼æ以è¿éæ¨è设为 `false`ï¼é¿å
åç¨ä¸åºç°æ°æ®æ··æ·çæ
åµ
'task_enable_coroutine' => false,
// éæèµæº
'document_root' => BASE_PATH . '/public',
'enable_static_handler' => true,
],
'callbacks' => [
SwooleEvent::ON_WORKER_START => [Hyperf\Framework\Bootstrap\WorkerStartCallback::class, 'onWorkerStart'],
SwooleEvent::ON_PIPE_MESSAGE => [Hyperf\Framework\Bootstrap\PipeMessageCallback::class, 'onPipeMessage'],
SwooleEvent::ON_WORKER_EXIT => [Hyperf\Framework\Bootstrap\WorkerExitCallback::class, 'onWorkerExit'],
SwooleEvent::ON_TASK => [Hyperf\Framework\Bootstrap\TaskCallback::class, 'onTask'],
SwooleEvent::ON_FINISH => [Hyperf\Framework\Bootstrap\FinishCallback::class, 'onFinish'],
],
5ãå®è£ 模æ¿å¼æï¼å主已ThinkTemplateï¼thinkphpï¼ å¼æ为ä¾
composer require sy-records/think-template
å®è£ å®æåæå¼ /config/autoload/view.phpï¼å° âengineâçå¼ä¿®æ¹ä¸ºThinkEngine::class
use Hyperf\View\Engine\ThinkEngine;
use Hyperf\View\Mode;
return [
'engine' => ThinkEngine::class,
'mode' => Mode::SYNC,
'config' => [
'view_path' => BASE_PATH . '/storage/view/', //模æ¿åæ¾è·¯å¾
'cache_path' => BASE_PATH . '/runtime/view/',
],
];
å¨æ ¹ç®å½å建 /storage/view/index.htmlæ件ï¼å¦æç®å½ä¸åå¨å°±æå¨å建ä¸ä¸ã
å¨æ§å¶å¨ä¸è°ç¨æ¨¡æ¿
use Hyperf\View\RenderInterface; //å¼å
¥
public function index(RenderInterface $render){
$name="hyperf";
return $render->render('index', ['name' => $name]); //渲æ模æ¿å¹¶è¾åº
}
index.html代ç å¦ä¸ï¼å éç¨äºthinkphpç模æ¿å¼æï¼ææç´æ¥ä½¿ç¨thinkphpç模æ¿è¯æ³å³å¯ï¼
${name}