php request 一个下午,一台电脑,终结你 90% 的 Symfony 重复劳动

php request 一个下午,一台电脑php request 一个下午,一台电脑,终结你 90% 的 Symfony 重复劳动,终结你 90% 的 Symfony 重复劳动

写 项目时,琐碎且重复的底层工作其实挺让人头疼的,比如处理文件上传、写 CRUD 界面、同步数据库时间戳。如果每个项目都从零开始,不仅容易加班,代码还容易出 Bug。

我总结了 9 个 扩展包。这些工具解决的都是开发中躲不开的痛点。

php request

:让全文搜索快起来

当数据库数据量达到几十万条时,用 LIKE %…% 搜索会变得非常慢。 把 集成到了 中。

我们可以直接通过 服务来搜索索引中的内容:

$results = $container->get('fos_elastica.finder.app.article')->find('搜索关键词');

它最省心的地方在于,当你用 保存实体时,它会自动把数据同步到 。

:别再手动更新时间戳

以前每建一个表,我都要在 里写 。一旦忘了写,数据追踪就断了。这个扩展包最常用的功能就是自动处理时间和生成 URL 别名(Slug)。

只要在字段上加个注解php request,剩下的事就不用管了:

use GedmoMappingAnnotation as Gedmo;
class Post
{
    // 创建时自动填充
    #[GedmoTimestampable(on: 'create')]
    #[ORMColumn]
    private DateTime $createdAt;
    // 只要有改动就自动更新
    #[GedmoTimestampable(on: 'update')]
    #[ORMColumn]
    private DateTime $updatedAt;
    // 根据标题自动生成唯一的 URL 别名,不用自己写正则过滤
    #[GedmoSlug(fields: ['title'])]
    #[ORMColumn(length: 150)]
    private $slug;
}

:搞定各种尺寸的缩略图

如果让用户直接上传 5MB 的图片并在列表页展示,页面加载会非常慢。 的思路是:原图存一份php requestphp request 一个下午,一台电脑,终结你 90% 的 Symfony 重复劳动,缩略图按需生成并缓存。

在模板里直接调用定义好的滤镜:

{# 自动生成并调用 120x120 的裁剪缩略图 #}
php request

:半天搭建出一套后台

php request

如果项目需要一个后台管理界面,没必要从 HTML 模板写起。 几乎是 开发者的首选,它能通过简单的 PHP 类配置出完整的 CRUD。

class ProductCrudController extends AbstractCrudController
{
    public static function getEntityFqcn(): string
    {
        return Product::class;
    }
    public function configureFields(string $pageName): iterable
    {
        yield TextField::new('name');
        yield MoneyField::new('price')->setCurrency('CNY');
    }
}

:文件上传不再乱糟糟

手动写文件上传要判断后缀、重命名防止冲突、还要在数据库记录路径。而 把这些流程标准化了。

只需要在配置文件里定义好映射,在 里绑定一个 File 对象即可:

#[VichUploadable]
class UserProfile
{
    #[VichUploadableField(mapping: 'avatars', fileNameProperty: 'imageName')]
    private ?File $imageFile = null;
    #[ORMColumn]
    private ?string $imageName = null;
    public function setImageFile(?File $imageFile = null): void
    {
        $this->imageFile = $imageFile;
        if ($imageFile) {
            $this->updatedAt = new DateTimeImmutable();
        }
    }
}

:分页逻辑一劳永逸

写分页最烦的就是算偏移量和总页数。我习惯直接把 Query 对象丢给 ,它能自动处理分页逻辑。

// 在 Controller 里
$pagination = $paginator->paginate(
    $queryBuilder, 
    $request->query->getInt('page', 1), 
    12 // 每页数量
);
return $this->render('list.html.twig', ['pagination' => $pagination]);

在 Twig 里一行代码就能渲染出分页条:{{ r() }}。

:安全加固其实很快

现在很多项目要求增加双重验证(2FA)。自己写验证码逻辑和 绑定很费劲,这个扩展包把安全流程都写好了。

只需要在 .yaml 里开启:

security:
    firewalls:
        main:
            two_factor:
                auth_form_path: 2fa_login
                check_path: 2fa_login_check

它会自动处理验证码的校验逻辑,我们只需要关注 UI 界面。

:多语言翻译不抓瞎

php request

做多语言项目时,最怕漏掉某个页面的翻译键值。这个包能扫描整个项目,把所有需要翻译的内容提取出来。

# 执行这个命令,它会自动更新你的 translation.yaml 文件
php bin/console translation:extract zh --config=app

它会找出所有 trans 标签和方法调用的内容,我们只需要对着文件填空,不用担心遗漏。

:高效生成的命令助手

这是大家最熟悉的,但很多人只用它生成 。其实它能做的事情非常多,比如生成权限控制(Voter)或者自定义命令。

# 快速生成一个权限检查器
php bin/console make:voter PostVoter
# 快速生成一个 CRUD 完整流程(含 Controller、Form、Template)
php bin/console make:crud Product

养成使用命令行生成的习惯,能规避很多手写代码带来的低级错误。

在本地开发 时php request,就不得不提配置 PHP 环境。有时候老项目要用 PHP 5.6,新项目要用 PHP 8.3,不同项目需要的扩展还不一样,在电脑里装一堆版本切来切去非常痛苦。

我最近在用 ,它不仅能一键安装 PHP版本,支持 PHP 5.3到 PHP 8.6-dev,并且支持多版本 PHP 同时并存。

php request

以前换个环境可能要折腾半天 或虚拟机, 是一键安装的,它把 PHP、、、Redis、 这些开发常用的组件都集成在一起了。最方便的是,可以在一个界面里同时运行多个 PHP 版本,不用为了跑一个老项目去重装环境。

如果也受够了在本地折腾 brew 或者改各种配置文件,尝试用 配合上面这些 ,能把更多精力放在业务逻辑上,开发节奏会顺畅很多。

最后

不要再把时间浪费在手动写上传和分页这种琐事上了。要么学会利用现成的轮子,要么就在无意义的搬砖中耗尽职业热情。你会发现,原来高质量的开发真的可以很快。

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » php request 一个下午,一台电脑,终结你 90% 的 Symfony 重复劳动

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们