작가: heiyeluren
블로그: http://blog.csdn.net/heiyeshuwu
시간: 2008-5-5
최근 중국에서 사용하고 있는 몇몇 주류 외국 PHP 프레임워크(국내 프레임워크 제외)를 간단히 사용해보았는데, 프레임워크를 선택할 때 어떤 프레임워크를 사용해야 하는지 간략하게 공유하고 싶습니다. 참고로.
주요 참조 프레임워크로는 CodeIgniter, CakePHP, ZendFramework 및 Symfony가 있습니다.
참고: 저는 많은 프레임워크를 진지하게 사용해 본 적이 없습니다. 제 의견이 미성숙하거나 틀릴 수도 있습니다. :-)
【CodeIgniter】
공식 홈페이지: http://codeigniter.com
중국어 웹사이트: http://codeigniter.org.cn
중국어 설명서: http://codeigniter.org.cn/user_guide
비디오 튜토리얼: http://codeigniter.org.cn/tutorials
테스트 버전: CodeIgniter_1.6.1
장점:
1. 구성이 간단하고 모든 구성이 PHP 스크립트를 사용하여 구성되며 실행 효율성이 높습니다. 기본 라우팅 기능이 있고 어느 정도 라우팅을 수행할 수 있으며 일정 수준의 인터페이스 외관을 생성할 수 있습니다. 데이터베이스 계층은 기본 MVC 기능으로 잘 캡슐화되어 있습니다.
2. 빠르고 간결하며, 코드가 많지 않고, 높은 실행 성능, 간단한 프레임워크, 사용하기 쉽고, 낮은 학습 비용, 자세한 문서가 포함되어 있으며, 간단하고 사용하기 쉬운 라이브러리가 많이 포함되어 있으며, 프레임워크는 소규모 애플리케이션에 적합합니다
. 단점:
1. 모델 계층을 데이터베이스 작업으로 간단히 이해
2. 프레임워크는 약간 단순하여 소규모 애플리케이션의 요구 사항만 충족할 수 있지만 중간 규모 애플리케이션의 요구 사항은 약간 덜 충족할 수 있습니다
.
일반적으로 CodeIgniter를 사용하면 간단하고 빠른 애플리케이션을 완성하는 동시에 어느 정도의 레이아웃을 구성하여 템플릿 재사용을 용이하게 할 수 있으며 CodeIgniter는 많이 사용하지 않습니다. 너무 복잡한 디자인 패턴. 성능과 코드 가독성 모두 좋습니다. 추가 라이브러리에 관해서도 꽤 훌륭하고 간단하며 효율적입니다.
【CakePHP】
공식 홈페이지: http://www.cakephp.org
중국어 설명서: http://www.1x3x.net/cakephp
비디오 튜토리얼: http://search.you.video.sina.com.cn/s?key=cakephp
테스트 버전: cake_1.1.19.6305
장점:
1. CakePHP는 데이터베이스 작동의 설계 방법 및 Active Record 방법을 포함하여 RoR과 가장 유사한 프레임워크입니다. 설계 수준이 매우 우아하고 추가 라이브러리가 제공되지 않으며 모든 기능이 순수 프레임워크이며 실행 효율성이 뛰어납니다. 나쁘지 않습니다. hasOne 및 hasMany 기능은 매우 강력하며 복잡한 비즈니스 처리에 적합합니다. 라우팅 기능과 구성 기능은 나쁘지 않습니다. 기본적으로 구현된 자동 스캐폴딩은 매우 강력합니다. MVC의 모든 계층에는 자동 작동 명령줄 스크립트 기능이 있습니다.
2. 문서는 비교적 완벽하며 중국에서 성공적으로 홍보되었습니다. 대부분의 사람들이 CakePHP를 알고 있습니다.
단점:
1. CakePHP의 매우 심각한 문제는 Model을 데이터베이스 계층 작업으로 이해한다는 것입니다. 이는 데이터베이스 이외의 작업 능력에 심각한 영향을 미칩니다.
2. CakePHP의 캐시 기능은 약간 약하고 구성 기능도 약간 약합니다. CakePHP는 대규모 애플리케이션에는 적합하지 않지만 소규모 애플리케이션에는 학습 비용이 약간 더 높습니다
.
일반적으로 CakePHP 프레임워크는 매우 중요한 시대를 대표하며 PHP 프레임워크를 대표하며 현재 매우 중요한 역할을 하고 있습니다. 많은 자체 작성 프레임워크는 CakePHP가 RoR Agile 개발 방법을 공개하는 획기적인 제품인 CakePHP 방법을 모방하고 있습니다. 데이터베이스 운영을 유일한 모델로 고려하는 디자인 철학은 마찬가지로 신속한 애플리케이션 및 프로토타입 개발을 위한 훌륭한 도구이므로 Web 2.0 웹 사이트를 위한 개발 프레임워크로 선택할 가치가 있습니다.
【Zend Framework】
공식 홈페이지: http://framework.zend.com
중국어 설명서: http://www.phpeye.com/zf
비디오 튜토리얼: http://framework.zend.com/docs/screencasts
테스트 버전: ZendFramework-1.5.0
장점:
1. 공식적으로 제작되었으며 많은 라이브러리가 포함되어 있습니다. 프레임워크 자체는 많은 디자인 패턴을 사용하여 작성되었습니다. 아키텍처가 매우 우아하고 MVC 디자인이 상대적으로 간단하고 라우팅 기능이 있으며 구성 파일이 있습니다. 상대적으로 강력하며(XML 및 PHP INI를 처리할 수 있음) 다양한 라이브러리는 매우 강력하며 프레임워크일 뿐만 아니라 대규모 클래스 라이브러리(PEAR 대체)라는 점을 포함하여 모든 PHP 프레임워크 중에서 가장 포괄적인 기능을 가지고 있습니다. 주요 기능은 데이터베이스 작업(CodeIgniter 및 CakePHP보다 강력함) 외에도 모델 레이어를 직관적으로 지원할 수 있으며 새로 추가된 다른 클래스를 쉽게 로드할 수 있습니다. 캐시 기능은 매우 강력하며 다음에서 지원됩니다. 프런트엔드 캐시에서 백엔드 캐시까지. 터미널 캐시는 Memcache, APC, SQLite, 파일 등을 지원하며 데이터베이스 작업 기능은 매우 강력하며 다양한 드라이버(어댑터)를 지원합니다.
하여
현재 많은 Web 2.0 웹사이트에서 사용되고 있으며 학습 비용이 중간 정도입니다.
1. MVC 기능은 상대적으로 약하고, View 레이어는 단순히 구현되어 있고(구현되지 않은 것처럼) 프런트 엔드 페이지를 매우 강력하게 제어할 수 없습니다.
2. 자동화된 스크립트가 없습니다. 항목 파일을 포함하여 애플리케이션을 생성하려면 항목 비용이 높습니다.
3. Zend Framework는 중형 애플리케이션 프레임워크로서는 큰 문제가 되지 않으며 대규모 애플리케이션용 프레임워크로는 거의 사용할 수 없습니다. 그러나 매우 성숙한 대규모 PHP 프레임워크로서 여전히 약간의 노력이 필요합니다
. 평가하다:
공식적으로 제작된 프레임워크로서 Zend Framework의 야망은 예측 가능합니다. Zend Framework는 원스톱 프레임워크 서비스를 제공하기 위해 많은 강력한 클래스 라이브러리를 캡슐화하기를 원합니다. 매우 강력한 제품을 개발할 수 있는 능력이 있기 때문에 프레임워크를 개선하는 데 더 많은 시간을 투자한다면 Zend Framework의 미래는 밝을 것입니다. 마찬가지로 Zend Framework 아키텍처 자체는 상대적으로 우아합니다. 이는 Zend가 공식적으로 많은 전문가를 보유하고 있으며 디자인 개념에서 상대적으로 앞서 있음을 보여줍니다. 비록 뷰 레이어, 자동화 스크립트 등과 같은 일부 기능이 완전히 구현되지는 않았지만 이것들은 모두 의존적입니다. 미래에. 일반적으로 Zend Framework는 가장 기대되는 프레임워크입니다. 물론 지금 프로젝트에 사용하고 싶다면 문제가 없습니다.
【심포니】
공식 홈페이지: http://www.symfony-project.org
중국 웹사이트: http://symfony-project.cn
최종 가이드: http://www.symfony-project.org/book
학습 참고자료: http://sf.thecodecentral.com
테스트 버전: Symfony-1.0.13
장점:
1. Symfony는 제가 아는 가장 강력한 PHP 프레임워크이며 오랫동안 사용해 왔지만 아직까지 많은 기능이 발견되지 않았습니다. 이는 MVC의 세 가지 계층을 완전히 구현하고 $_POST, $_GET를 포함한 모든 것을 캡슐화합니다. 데이터, 예외 처리, 디버깅 기능, 데이터 감지; 강력한 캐싱 기능, 클래스 자동 로딩(이 기능은 매우 훌륭함), 강력한 i18n 국유화 지원이 포함되어 있으며 매우 강력한 뷰 레이어 작업을 제공하며 단편적인 방식으로 여러 파일을 포함할 수 있습니다. 매우 강력한 구성 기능. yml 구성을 사용하면 모든 프레임워크와 프로그램 실행 동작을 제어할 수 있습니다. 이는 매우 강력하여 사람들이 마음대로 다양한 클래스를 정의할 수 있으며 Symfony는 이러한 클래스를 자동으로 로드(자동 로드)할 수 있습니다. 프로그램에서 마음대로 호출할 수 있습니다. 강력한 다단계 프로젝트 및 애플리케이션 관리가 포함됩니다. 프로젝트 --> 애플리케이션 --> 모듈 --> 액션, 하나의 프로젝트에서 여러 애플리케이션의 요구 사항을 충족할 수 있습니다. 각 레이어는 자체 클래스 라이브러리, 프로젝트 구축, 애플리케이션 구축, 캐시 새로 고침 등을 포함한 매우 강력한 명령줄 작업 기능을 정의할 수 있습니다.
2. Symfony를 사용하면 개발 비용이 크게 절감되고 여러 사람이 프로젝트 수준에서 기본 클래스를 정의한 후에는 문제가 없기 때문에 크고 복잡한 프로젝트를 개발할 때 가장 먼저 선택되는 것이 바로 Symfony입니다. 재사용이 많은 코드의 단점
:
1. 데이터베이스 운영 모델은 Heavyweight Prop과 Creole을 사용하고 있는데 제가 테스트한 버전에서는 애드온으로 옮겨져 사용이 가능해졌습니다.
2. 캐시 기능은 제어할 수 없습니다. 캐시는 개발 및 디버깅 중에 항상 캐시됩니다. 캐시를 지우고 다시 작성하려면 Symfony cc 및 Symfony rc를 실행해야 합니다.
3. 효율성이 그다지 높지 않습니다. 특히 템플릿을 구문 분석하고 구성 파일을 읽는 프로세스에는 많은 시간이 걸립니다.
4. 학습 비용이 매우 높으며, 중국에는 성숙한 커뮤니티와 문서가 없으며 심지어 중국어 매뉴얼도 없습니다. 따라서 모든 기능을 숙지하고 다음
을 평가하는 데 많은 시간이 걸립니다.
Symfony는 분명히 Java 분야의 강력한 프레임워크와 경쟁할 수 있는 유일한 프레임워크입니다. 강력한 것은 당연히 배우기 복잡하지만 프로젝트 개발에도 도움이 됩니다. 당연히 Symfony를 사용하는 것이 좋습니다. 복잡한 프로젝트의 경우에는 그만한 가치가 있다고 생각합니다. 이후 단계의 유지 관리 비용은 상대적으로 낮고 재사용성은 매우 높습니다. 이에 따라 보다 복잡한 인터넷 프로젝트에 Symfony를 사용하는 경우에는 데이터베이스 배포 문제를 고려해야 합니다. 그러면 Symfony에 포함된 데이터베이스 작업 계층을 버리고 직접 정의해야 합니다. 물론 Symfony는 모델 계층의 임의 구성을 지원합니다.
[일반사항]
위의 프레임워크들은 각각의 특징을 가지고 있으며 모두 오픈소스 프로젝트입니다. 그러나 프레임워크가 대상으로 하는 프로젝트는 다릅니다. 일반적으로 소규모 프로젝트에는 CodeIngiter가 더 적합하고, CakePHP와 Zend Framework가 더 적합합니다. 중형 프로젝트이며 Symfony는 크고 무거운 프로젝트에 더 적합합니다. 프로젝트를 선택할 때 프레임워크의 사용자 정의 가능성과 확장성을 충분히 고려해야 합니다. 왜냐하면 각 프로젝트는 요구 사항이 변함에 따라 변경할지 여부를 결정할 수 없기 때문입니다.
상대적으로 말하면 Zend Framework와 Symfony는 변화에 대처하는 강력한 능력을 가지고 있으며, 특히 마음대로 사용자 정의할 수 있는 모델 계층의 클래스를 사용하면 자신의 비즈니스 또는 데이터 처리 클래스를 추가하는 것이 매우 편리합니다. 개인적으로 이러한 프레임워크를 추천합니다. 중형 및 대형 프로젝트에 사용됩니다. CodeIngiter와 CakePHP는 중소 규모 프로젝트, 신속한 개발 및 프로토타입 구축에서도 중요한 역할을 할 수 있으며, 목표가 불분명한 프로토타입 프로젝트 개발에 매우 적합합니다. 프레임워크를 이해하는 가장 좋은 방법은 그것을 사용하는 것이고, 프레임워크를 배우는 가장 좋은 방법은 비디오를 보는 것입니다. :-)
선량한 사람들은 서로 다른 의견을 가지고 있고, 현명한 사람들은 서로 다른 의견을 갖고 있습니다. 프로젝트 프레임워크를 선택할 때 프로젝트의 요구 사항과 향후 변경 사항을 주의 깊게 검토한 다음 프로젝트 개발 속도와 합리적인 균형을 달성할 수 있는 적절한 프레임워크를 선택하세요. 물론, 프레임워크를 직접 작성하는 것이 더 적합할 수도 있습니다. :-)
여러 프레임워크에 대해 일반적인 평가를 했는데 많은 부분이 적절하지 않은 것 같으니 의견과 수정도 환영합니다.