Symfony学习-01

来源:互联网 发布:c语言浮点数精度控制 编辑:程序博客网 时间:2024/05/22 04:49

昨天学习了Symfony,照着文档把CRUD做了遍,趁今天有空闲,写下自己的感受。

1、组件化

似乎所有的功能都是已组件的形式引入到框架里面,之前用的CakePHP也是这种思路。

HttpFoundation Request Response其中就包括sessioncookie$_GET$_POST的操作

http://symfony.com/doc/current/components/http_foundation.html

2、面向对象

Cookie创建

$response = new Response();

$response->headers->setCookie(new Cookie('username', 'zhangsan',3600));

$response->send();

将相应头对象,cookie本身分离开, 虽然有点麻烦, 但是很清晰的描述了cookie的创建过程。

In PHP, the request is represented by some global variables ($_GET, $_POST, $_FILES, $_COOKIE, $_SESSION, ...)

and the response is generated by some functions (echo, header(), setcookie(), ...).

谈到面向对象,就想起了ThinkPHP,感觉虽然标榜自己是面向对象,但是看过源码和在使用过程中,个人感觉更多的还是在面向过程。

3、文档排版不习惯

之前的MVC框架都是按照文档都是分布在对应的架构层里面,symfony的文档是按照组件划分的, 要查看文档,首先得知道要查找的类容属于一个组件。如果一点不了解框架的设计思路,还真找不到文档在哪里。就拿Cookie 和 Session来说,在CakePHP是单独的两个组件, 而Symfony把他们都加入到了HttpFoundation组件中,找了很久才找到,刚开始还以为是文档不全。

 

4、数据库操作显得繁琐

service容器中获取doctrine服务,--》获取对象管理器--》根据类名从对象容器中获取Entity实例--》获取数据对象

 

5、类似Java框架

感觉Symfony就是Java SpringStruts的翻版,之前一直在用PHP eclipse开发,但是突然发现,Entity类没有get set 自动生成,手动输入很麻烦。要是有Hibernate反向自动生成就更好了。也是了解了Symfony才知道有doctrine 这样一个ORM框架。在操作Doctrine 时候,工具没有提示功能。

自动生成get、set方法:

参考:https://stackoverflow.com/questions/41044462/symfony-3-auto-generate-boolean-getters-and-setters-isactive-vs-getactive

[root@localhost symfony_test]# php bin/console doctrine:generate:entities AppBundle:Book
Generating entity "AppBundle\Entity\Book"
  > backing up Book.php to Book.php~
  > generating AppBundle\Entity\Book
[root@localhost symfony_test]#

原创粉丝点击