1、symfony是什么?与laravel相比较,各有什么侧重点和优劣势?
a、symfony是一个php现代框架,部分引领了php的新特性
b、symfony是一个底层框架,客户包括laravel、magento等
c、symfony的bundle与package不同,他是symfony的规范组件扩展包,与package相比较,与框架结合的更加紧密,不能脱离symfony独立存在
d、symfony是发动机和底盘,laravel是一辆已造好的汽车。laravel在底层和复杂的业务应用上有优势,laravel在开发速度上有优势
2、选择symfony还是laravel作为p1 saas erp的底层框架
DS推荐symfony:
a、symfony与p1 saas erp的元数据驱动方式比较接近
b、laravel的Eloquent是声明式的,不符合元数据驱动的方式,需要做很大的改动
c、改造成元数据驱动,laravel集成的底层需要调整,调整的工作量会很大
d、symfony有多租户的隔离策略,laravel集成的是第三方,不易调整
e、symfony的工作流解决方案是官方,laravel是社区的,成熟度不高
f、twig模板既可以用前后端一体,也可以用api的方式,而laravel的blade/inertia更偏向后端渲染
g、symfony的bundle可以将元数据驱动引擎,封装成独立的包,可以供其他的项目使用,而laravel的封装效果不如symfony。
3、twig与smarty模板对比
a、twig更新(晚10年),模板中不放复杂的业务逻辑,复杂的逻辑建议放在php中实现
4、#[ORM\Entity]是什么?
a、PHP8.0引入的原生属性注解
b、php官方已经将属性注解作为未来元数据定义的标准方式,symfony率先拥抱
5、symfony中,如何处理自定义字段
a、方案1:在代码中,放入一个数组,存储动态字段
b、EAV (Entity-Attribute-Value) 模型 --不懂
c、Doctrine 动态元数据(高级)
6、symfony中,如何实现元数据驱动的后端向前端返回json schema的方案
a、使用 symfony/serializer+ 自定义 Normalizer
b、在后端生成 Schema 时注入验证逻辑
7、什么是Docker
Docker 是一个开源的容器化平台,它允许开发者将应用程序及其所有依赖项(库、系统工具、代码、运行时环境)打包到一个标准化的单元中,这个单元就称为容器(Container)。与传统的虚拟机相比,Docker与Docker之间,公用同一个os。
8、离线开发的思路
a、将json schema等,存储到localStorage或者indexedDB中
b、离线模式和在线模式的认证
9、Symfony元数据驱动的bundle有哪些?
a、Doctrine ORM本身就是元数据驱动的。
b、easyAdmin
c、API platform
