包安装方法
Packagist
Packagist 是默认的 Composer 包存储库,它聚合了可使用 Composer 安装的公共 PHP 包。您可以使用 Composer 来管理项目或库的依赖项 – 在Composer 网站上阅读有关它的更多信息。
安装包命令
cd project
composer require logger -v;
Symfony Flex
Symfony Flex 是一个简化 Symfony 应用程序安装/删除软件包的工具。
从技术上讲,Symfony Flex 是一个 Composer 插件,它可以自动完成 Symfony 应用程序中最常见的命令。
Symfony Flex 预定义了配置表仓库(recipes)在安装包时优先从仓库中查找和安装,配置表中的安装包记录了所有需要安装的相关库和对应的版本号。
Symfony Flex 配置表由社区贡献,共两个公共仓库:
- 主配方存储库,是一个高质量和在维护的配置表。默认情况下只在这个存储库中查找。
- Contrib 配方存储库,包含由社区创建的所有配置表。它们都保证能够正常工作,但是它们相关的包可能无法维护。
Symfony Packs 包
有时需要安装多个包和捆绑包。Symfony 提供的包是包含多个依赖项的 Composer 元包。
例如,若要在应用程序中添加调试功能,可以运行该命令:
composer require --dev debug
这样就安装了 symfony/debug-pack,它又安装了几个包,比如 symfony/debug-bundle、 symfony/monolog-bundle、 symfony/var-dump 等。解决包安装的依赖关系。
常见包列表
Annotation Routes 注释路由
在控制器中使用注释或属性路由。从 PHP 8 开始,属性内置在 PHP 中。
composer require annotations
#或,实际包名为require annotationssensio/framework-extra-bundle,别名annotations
composer require annotationssensio/framework-extra-bundle
代码:
use Symfony\Component\Routing\Annotation\Route;
class LuckyController
{
#[Route('/lucky/number')]
public function number(): Response
{
// 代码....
}
}
验证路由
php bin/console debug:router
twig 模板
PHP 模板引擎,实现从控制器返回 HTML 渲染到浏览器。Twig 有灵活、快速、安全的特点。
composer require twig
代码:
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
//必须继承框架的抽象控制器类
class LuckyController extends AbstractController
{
#[Route('/lucky/number')]
public function number(): Response
{
$number = random_int(0, 100);
//模板文件lucky/number.html.twig
return $this->render('lucky/number.html.twig', [
'number' => $number,
]);
}
}
模板文件语法参考文档:Creating and Using Templates (Symfony 6.0 Docs)
HTTP Client (HTTP 客户端)
是一个低级别的 HTTP 客户端,同时支持 PHP 流包装器和 cURL。它提供了使用 API 的实用程序,并支持同步和异步操作。
composer require symfony/http-client
代码:
$response = $this->client->request(
'GET',
'https://api.github.com/repos/symfony/symfony-docs'
);
$statusCode = $response->getStatusCode();
// $statusCode = 200
$contentType = $response->getHeaders()['content-type'][0];
// $contentType = 'application/json'
$content = $response->getContent();
// $content = '{"id":521583, "name":"symfony-docs", ...}'
$content = $response->toArray();
// $content = ['id' => 521583, 'name' => 'symfony-docs', ...]
Filesystem 文件系统
操作文件和目录
composer require symfony/filesystem
代码:
use Symfony\Component\Filesystem\Exception\IOExceptionInterface;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Filesystem\Path;
$filesystem = new Filesystem();
try {
$filesystem->mkdir(
Path::normalize(sys_get_temp_dir().'/'.random_int(0, 1000)),
);
} catch (IOExceptionInterface $exception) {
echo "An error occurred while creating your directory at ".$exception->getPath();
}
Translations 多语言/国际化
composer require symfony/translation
参考配置:翻译(Symfony 6.0 文档)