프레임워크가 없는 최신 PHP. 배울 PHP 프레임워크는 무엇입니까? PHP 프레임워크 선택


나는 내 생각을 공유하고 내 두 센트를 넣을 것입니다. 기사에는 많은 숫자나 그래프(모든 종류의 Google 트렌드)가 포함되지 않고 개인적인 관찰만 포함됩니다.

그래서 최신 버전의 PHP가 출시되고 대중적인 PHP 프레임워크(Zend Framework 2, Yii2(alpha) 등)의 새로운 버전이 등장하면서 PHP 언어에 대한 관심이 높아지고 있습니다. 그건 그렇고, 현재 언어는 매우 인기가 있습니다. 대부분 초보 웹 개발자(현재 모든 웹사이트의 80% 이상에서 사용)와 평균 트래픽이 있는 리소스 사이에서 발생합니다.

물론 PHP를 사용하는 세계적인 수준의 사이트의 예가 있습니다.

PHP 프레임워크에 대한 질문으로 돌아가서 그 중 어느 것이 현재 인기 있고 수요가 많으며 어떤 것을 연구해야 하는지 선택합시다. 서구 시장에 대해 이야기하면 수요와 언급 빈도 측면에서 확실한 리더는 Zend Framework, CodeIgniter 및 빠르게 인기를 얻고 있는 Yii입니다. 세계 최대의 프리랜서 거래소인 oDesk와 Elance에서는 이 트리오 외에도 CakePHP와 Symfony가 자주 언급됩니다.

소비에트 이후의 공간에서 다음은 내림차순으로 인기가 있습니다.

  • 젠드 프레임워크
  • CodeInginter
  • 심포니
  • 코하나
  • 케이크PHP

요약하면 프로그래머의 선호도와 고용주의 요청에 따라 세계에서 가장 인기 있는 PHP 프레임워크는 다음과 같습니다. 젠드 프레임워크, 코드이그나이터그리고 이이. 후자는 빠르게 인기를 얻고 있습니다. Symfony와 CakePHP는 프리랜서 개발자들 사이에서도 일반적입니다.

다른 스크립팅 언어(예: Python 및 Ruby)의 인기가 높아지고 있음에도 불구하고 대기업은 여전히 ​​대부분 PHP를 선택합니다. 그리고 플랫폼을 선택할 때 확장성, 프레임워크의 인기, 시장에서 이 플랫폼의 전문가 가용성과 같은 기준에 따라 결정됩니다. HiLoad 영역에서는 PHP가 조금 뒤쳐져 한계에 도달한 것 같습니다. 그러나 kPHP, HipHop 등과 같이 이를 기반으로 컴파일된 솔루션이 있습니다.

무엇을 공부하고 무엇에 집중해야 할까요?

PHP에 대한 기본 지식이 있고 이 방향으로 발전하고 싶고 자신의 기술이 고용주에게 유용하기를 원한다면 먼저 상위 세 가지 프레임워크를 자세히 살펴봐야 합니다. 젠드, 코드이그나이터, 이이. 다음으로, 어떤 것이 더 "귀엽고" 배우기 쉬운지 결정해야 합니다. 마지막으로 테스트하십시오.

프레임워크에 대한 나의 개인적인 태도는 다음과 같습니다.

- Zend 프레임워크 - 대중적이기는 하지만 엄청난 성능 문제가 있습니다. 이 프레임 워크에 대한 지식이 있으면 어려움없이 직업을 찾을 수 있습니다. 또 다른 질문은 "쉽게 입력"할 수 있는지 여부입니다. 저는 배우기가 어려우므로 시작해서는 안됩니다, IMHO.

- CodeIgniter - 간단하고 빠릅니다. 그러나 기능면에서 경쟁사보다 매우 뒤떨어져 있습니다. MVC 및 기타 트릭을 다루기 위해 시작하는 것이 매우 좋습니다. 그러나 시간이 지남에 따라 즉시 사용할 수 있는 기능을 놓치게 됩니다.

- Yii는 그 사이에 있습니다. CodeIgniter보다 생산성이 약간 떨어지지만 훨씬 더 많은 기능이 포함되어 있습니다. 그것은 좋은 문서를 가지고 있으며 일반적으로 Zend보다 훨씬 친숙합니다.

-위에서 언급 한 나머지 프레임 워크도 주목할 가치가 있지만 개인적으로 접촉하지 않았으므로 물을 더럽 히지 않겠습니다.

나는 CodeIgniter를 배우기 시작했고 그것을 좋아했습니다. 그런 다음 기능이 그리워지기 시작했고 대안을 찾기 시작했습니다. 지금은 Yii를 연구하고 업무에 활용하고 있습니다. 질문하는 경우 배우기 위해 선택할 PHP 프레임워크우위를 점하기 위해 - 그렇다면 Yii 1.1을 공부하는 경향이 있습니다. 이전 버전과 호환되지 않는 Yii2에 대한 활성 작업이 당신을 귀찮게 하지 않도록 하십시오. 생산에 들어가기까지는 많은 시간이 걸립니다.

도움이 되었기를 바랍니다.

  • 번역
  • 지도 시간

나는 당신에게 어려운 일이 있습니다. 다음에 새 프로젝트를 시작할 때는 PHP 프레임워크 없이 시도해 보십시오. 나는 프레임워크의 결함을 나열하지 않을 것이며 이것은 소외 증후군의 징후가 아닙니다. 이 가이드에서는 여러 프레임워크 개발자가 작성한 패키지를 사용할 것입니다. 저는 이 분야의 혁신을 전적으로 존중합니다.


그러나이 기사는 그들에 관한 것이 아닙니다. 그녀는 당신에 관한 것입니다. 더 나은 개발자가 될 수 있는 기회에 대해.


아마도 프레임워크를 떠나는 것의 주요 이점은 내부에서 모든 것이 어떻게 작동하는지 아는 것일 것입니다. 디버그하거나 완전히 이해할 수 없을 정도로 사용자를 돌보는 프레임워크에 의존하지 않고도 진행 상황을 확인할 수 있습니다.


아마도 당신의 다음 직업은 당신이 프레임워크 없이 새로운 프로젝트를 시작하는 것을 즐기지 못하게 할 것입니다. 비즈니스에 중요한 많은 중요한 PHP 작업에는 기존 애플리케이션 사용이 포함됩니다. CodeIgniter 또는 FuelPHP와 같은 이전 플랫폼 중 하나에서 Laravel 또는 Symfony와 같은 최신 프레임워크를 기반으로 구축된 애플리케이션인지 또는 "포함 지향 아키텍처"를 사용하여 우울할 정도로 널리 퍼진 레거시 PHP 애플리케이션인지는 중요하지 않습니다. 개발하다 없이프레임워크를 사용하면 더 잘 준비할 수 있습니다. 어느미래의 PHP 프로젝트를 위해.


이전에는 프레임워크 없이 만들려고 했습니다. 일부 시스템 HTTP 요청을 해석 및 라우팅하고 HTTP 응답을 보내고 종속성을 관리해야 합니다. 표준의 부족은 필연적으로 적어도 이것들프레임워크의 구성 요소는 밀접하게 상호 연결되었습니다. 따라서 프레임워크 없이 프로젝트 개발을 시작했다면 결국 자신만의 프레임워크를 만들게 되었습니다.


그러나 오늘날 PHP-FIG의 자동 로딩 및 상호 호환성 덕분에 프레임워크 없이 개발할 수 있습니다. 수많은 개발자가 작성한 훌륭한 상호 호환 패키지가 많이 있습니다. 단일 시스템에 통합하는 것은 생각보다 훨씬 쉽습니다!

PHP는 어떻게 작동합니까?

우선, PHP 애플리케이션이 외부 세계와 상호 작용하는 방식을 이해하는 것이 중요합니다.


PHP는 요청/응답 주기로 서버 애플리케이션을 실행합니다. 브라우저, 명령줄 또는 REST API에서 애플리케이션과의 모든 상호 작용은 요청으로 제공됩니다. 요청이 수신되면 애플리케이션이 로드되고 요청을 처리하고 클라이언트로 다시 전송되는 응답을 생성하고 애플리케이션이 닫힙니다. 그래서 그것은 언제 발생합니다 여러분손질.

요청 컨트롤러

이 지식을 바탕으로 전면 컨트롤러부터 시작하겠습니다. 애플리케이션에 대한 모든 요청을 처리하는 PHP 파일입니다. 즉, 요청이 도달하는 첫 번째 PHP 파일이고 (사실상) 애플리케이션의 응답이 통과하는 마지막 PHP 파일입니다.


고전적인 예를 사용합시다 안녕 세상!, PHP의 내장 웹 서버에서 제공하여 모든 것이 올바르게 설정되었는지 확인합니다. 아직 설치하지 않은 경우 환경에 PHP 7.1 이상이 설치되어 있는지 확인하십시오.


프로젝트 디렉토리를 만들고 그 안에 공개 중첩 디렉토리를 만들고 그 안에 index.php 파일을 다음 코드와 함께 만들어 봅시다.


우리는 여기에서 강력한 타이핑을 선언하고 있습니다. 이것은 애플리케이션의 모든 PHP 파일 시작 부분에서 수행되어야 합니다. 유형 힌트는 디버깅과 이후에 코딩하는 사람들의 명확한 이해에 중요하기 때문입니다.



PHP -S 로컬호스트:8080 -t 공개/

이제 브라우저에서 http://localhost:8080/ 주소를 열어보겠습니다. 표시됨 안녕 세상! 실수가 없습니까?


괜찮은. 다음 단계로 넘어갑시다!

자동 로드 및 타사 패키지

PHP로 처음 작업을 시작했을 때 아마도 include 또는 require 문을 사용하여 다른 PHP 파일에서 기능이나 구성을 가져왔을 것입니다. 일반적으로 이것은 다른 사람들이 나중에 코드를 이해하고 종속성이 어디에 있는지 이해하는 것이 훨씬 더 어렵기 때문에 피하는 것이 가장 좋습니다. 이것은 디버깅을 악몽.


종료 - 자동 로드. 즉, 애플리케이션에서 클래스를 사용해야 할 때 PHP는 클래스를 찾을 위치를 알고 호출 시 자동으로 로드합니다. 이 기능은 PHP 5부터 있었지만 PSR-0(현재 PSR-4로 대체된 자동 로딩 표준)의 출현과 함께 사용되었습니다.


우리는 자체 오토로더를 작성하는 번거로움을 겪을 수 있지만 타사 종속성을 관리하기 위해 Composer를 선택했고 이미 매우 편리한 오토로더가 있으므로 Composer를 사용할 것입니다.

미들웨어

요청이 외부에서 중앙으로 이동하고 응답이 반대 방향으로 이동하는 양파로 애플리케이션을 상상한다면, 미들웨어는 요청을 수신하는 양파의 각 레이어이며 아마도 응답으로 무언가를 수행하고 이를 응답으로 전달합니다. 하위 계층 또는 응답을 생성하고 상위 계층으로 보냅니다. 이는 존재하지 않는 경로 요청과 같은 특정 조건에 대해 중간 계층이 요청을 확인하는 경우에 발생합니다.


요청이 끝까지 진행되면 애플리케이션이 이를 처리하고 응답으로 전환합니다. 그 후 각 중간 계층은 역순으로 응답을 수신하고 수정하여 다음 계층으로 전달할 수 있습니다.


중간 레이어 사용 옵션:

  • 개발 문제 디버깅.
  • 프로덕션에서 점진적인 예외 처리.
  • 들어오는 요청의 빈도를 제한합니다.
  • 지원되지 않는 미디어 유형에 대한 요청에 대한 응답입니다.
  • CORS 처리.
  • 요청을 적절한 처리 클래스로 라우팅합니다.

이러한 모든 상황을 처리하기 위한 도구를 구현하는 유일한 방법은 미들웨어입니까? 별말씀을요. 그러나 미들웨어 구현은 요청/응답 주기를 훨씬 더 명확하게 만들어 디버깅을 크게 단순화하고 개발 속도를 높입니다.


마지막 시나리오인 라우팅에 중간 계층을 사용합니다.

라우팅

라우터는 요청의 정보를 사용하여 처리해야 하는 클래스를 파악합니다(예: URI /products/purple-dress/medium은 보라색 드레스 및 매체를 인수로 전달한 ProductDetails::class 클래스를 사용하여 처리해야 함). .


우리의 애플리케이션은 PSR-15 호환 미들웨어 구현을 통해 널리 사용되는 FastRoute 라우터를 사용합니다.

미들웨어 디스패처

애플리케이션이 일종의 중간 계층과 함께 작동하려면 디스패처가 필요합니다.



컴포저에는 릴레이/릴레이가 필요합니다. [이메일 보호]

그리고 PSR-15 사양은 PSR-7 호환 HTTP 메시지를 전달하기 위해 미들웨어 구현을 요구하므로 Zend Diactoros를 사용할 것입니다.


컴포저에는 zendframework/zend-diactoros가 필요합니다.

중간 계층을 수신할 Relay를 준비합시다.


// ... DI\ContainerBuilder 사용; ExampleApp\HelloWorld 사용; 릴레이\릴레이 사용; Zend\Diactoros\ServerRequestFactory를 사용하십시오. 함수 DI\create 사용; // ... $container = $containerBuilder->build(); $middlewareQueue = ; $requestHandler = 새 릴레이($middlewareQueue); $requestHandler->

16행에서 우리는 ServerRequestFactory::fromGlobals()를 사용하여 새 요청을 생성하고 이를 Relay에 전달하는 데 필요한 모든 정보를 수집합니다. 여기에서 요청이 중간 계층 스택에 도달합니다.


이제 FastRoute와 요청 핸들러를 추가해 보겠습니다(FastRoute는 요청이 유효하고 애플리케이션에서 처리할 수 있는지 확인하고 요청 핸들러는 이 경로에 대해 구성된 핸들러에 요청을 전달합니다).


작성기에는 미들웨어/빠른 경로 미들웨어/요청 처리기가 필요합니다.

이제 핸들러 클래스의 경로를 정의하겠습니다. 안녕 세상!.. 여기에서 /hello 경로를 사용하여 기본 URI 이외의 경로를 사용할 가능성을 보여줍니다.


// ... DI\ContainerBuilder 사용; ExampleApp\HelloWorld 사용; FastRoute\RouteCollector 사용; 미들웨어\FastRoute 사용; Middlewares\RequestHandler를 사용하십시오. 릴레이\릴레이 사용; Zend\Diactoros\ServerRequestFactory를 사용하십시오. 함수 DI\create 사용; FastRoute\simpleDispatcher 함수 사용; // ... $container = $containerBuilder->build(); $routes = simpleDispatcher(function (RouteCollector $r) ( $r->get("/hello", HelloWorld::class); )); $middlewareQueue = new FastRoute($routes); $middlewareQueue = 새로운 RequestHandler(); $requestHandler = 새 릴레이($middlewareQueue); $requestHandler->handle(ServerRequestFactory::fromGlobals());

작동하려면 HelloWorld를 업데이트하여 이 클래스를 함수로 호출할 수 있도록 호출 가능한 클래스로 만들어야 합니다.


// ... class HelloWorld ( public function __invoke(): void ( echo "Hello, autoloaded world!"; exit; ) )

추가된 종료를 확인하십시오. __invoke() 매직 메서드에서. 그것이 무엇인지 곧 이해하게 될 것입니다.



// ... Zend\Diactos\ServerRequestFactory 사용; 함수 DI\create 사용; 함수 DI\get 사용; FastRoute\simpleDispatcher 함수 사용; // ... $containerBuilder->addDefinitions([ HelloWorld::class => create(HelloWorld::class) ->constructor(get("Foo")), "Foo" => "bar" ]); $container = $containerBuilder->빌드(); // ... $middlewareQueue = new FastRoute($routes); $middlewareQueue = new RequestHandler($container); $requestHandler = 새 릴레이($middlewareQueue); $requestHandler->handle(ServerRequestFactory::fromGlobals());

짜잔! 브라우저를 새로고침하면 안녕 바 세계!.

정답 보내기

HelloWorld 에서 exit 문을 언급한 것을 기억하십니까?


이것은 간단한 응답을 받을 수 있는 쉬운 방법이지만 여전히 브라우저에 출력을 보내는 가장 좋은 방법은 아닙니다. 이 대략적인 접근 방식은 HelloWorld가 다른 클래스에서 처리해야 하는 추가 보고 작업을 수행하도록 합니다. 이로 인해 헤더와 상태 코드를 보내기가 너무 어려워지고 실행 중인 미들웨어가 실행될 기회를 주지 않고 응용 프로그램이 종료됩니다. ~ 후에안녕하세요.



응답을 반환하도록 HelloWorld를 업데이트합니다.


// ... 네임스페이스 ExampleApp; Psr\Http\Message\ResponseInterface 사용; class HelloWorld ( 개인 $foo; 개인 $response; 공개 함수 __construct(string $foo, ResponseInterface $response) ( $this->foo = $foo; $this->response = $response; ) 공개 함수 __invoke(): ResponseInterface ( $response = $this->response->withHeader("Content-Type", "text/html"); $response->getBody() ->write(" 안녕하세요, ($this->foo) world!"); return $response; ) )

HelloWorld에 새로운 Response 개체가 제공되도록 컨테이너 정의를 업데이트해 보겠습니다.


// ... 미들웨어\RequestHandler 사용; 릴레이\릴레이 사용; Zend\Diactoros\Response를 사용하십시오. Zend\Diactoros\ServerRequestFactory를 사용하십시오. 함수 DI\create 사용; // ... $containerBuilder->addDefinitions([ HelloWorld::class => create(HelloWorld::class) ->constructor(get("Foo"), get("Response")), "Foo" => " bar", "Response" => function() (return new Response(); ), ]); $container = $containerBuilder->빌드(); // ...

지금 페이지를 새로 고치면 빈 화면이 나타납니다. 애플리케이션은 미들웨어 관리자로부터 올바른 Response 객체를 반환한 다음... 무엇을?


그것으로 아무 것도하지 않습니다.


도구가 하나 더 필요합니다. 바로 이미터입니다. 애플리케이션과 웹 서버(Apache, nginx 등) 사이에 있으며 요청을 생성한 클라이언트에 응답을 보냅니다. 이미터는 단순히 Response 객체를 가져와 서버 API가 이해할 수 있는 지침으로 변환합니다.


좋은 소식! 이미 요청을 관리하는 데 사용하는 Zend Diactoros 패키지에는 PSR-7 응답 이미터가 포함되어 있습니다.


예제를 간단하게 유지하기 위해 여기서는 매우 간단한 이미터를 사용하고 있습니다. 훨씬 더 복잡할 수 있지만 대용량 다운로드의 경우 실제 애플리케이션은 스트림 이미터를 자동으로 사용하도록 구성해야 합니다. Zend 블로그에 잘 설명되어 있습니다.


public/index.php를 업데이트하여 디스패처에서 응답을 받아 이미터로 전달해 봅시다.


// ... Relay\Relay 사용; Zend\Diactoros\Response를 사용하십시오. Zend\Diactoros\Response\SapiEmitter를 사용하십시오. Zend\Diactoros\ServerRequestFactory를 사용하십시오. 함수 DI\create 사용; // ... $requestHandler = new Relay($middlewareQueue); $response = $requestHandler->handle(ServerRequestFactory::fromGlobals()); $emitter = new SapiEmitter(); return $emitter->emit($response);

페이지 새로고침 - 다시 시작하겠습니다! 보다 강력한 응답 처리가 필요한 때입니다.


15행에서 ​​요청/응답 주기가 종료되고 웹 서버가 작동합니다.

완성

44줄의 코드와 널리 사용되고 엄격하게 테스트되고 강력하며 상호 운용 가능한 구성 요소 몇 개를 사용하여 최신 PHP 애플리케이션의 부트스트랩 프로그램을 구현했습니다. PSR-4 , PSR-7 , PSR-11 및 PSR-15 표준과 호환되므로 광범위한 HTTP 메시지 구현, DI 컨테이너, 미들웨어 및 디스패처를 사용할 수 있습니다.


우리는 기술과 추론의 일부를 탐구했지만 수반되는 프레임워크 정크 없이 새 애플리케이션에 대한 부트스트랩 프로그램의 단순성을 볼 수 있기를 바랍니다. 또한 이러한 기술을 기존 애플리케이션에 적용할 준비가 더 잘 되셨기를 바랍니다.

태그: 태그 추가

오늘 여러분은 장단점이 있는 PHP 프레임워크 목록을 보게 될 것입니다. 이 목록이 도움이 되었으면 합니다. 그럼, 가자!

라라벨


필수 PHP 버전 - 7

Laravel은 MVC 아키텍처를 사용하여 신속한 애플리케이션 개발을 위해 설계된 포괄적인 프레임워크입니다. 모든 PHP 프레임워크 중에서 가장 많이 사용되며 개발자들 사이에서 많은 지지를 받고 있습니다.

장점:

  • MVC 아키텍처의 가용성(PHP 7 포함)
  • 단위 테스트(HHVM용 FAST)
  • 높은 수준의 추상화
  • 동적 방법으로 과부하를 피할 수 있는 기회
  • 엄청난 양의 내장 기능
  • Stripe 시스템과 결제 통합 기능
  • 신뢰할 수 있는 데이터 암호화 시스템

팔콘


필요한 PHP 버전은 5.3입니다.

Phalcon은 PHP용 MVC 기반 프레임워크입니다. 다른 프레임워크와 달리 Phalcon은 작동하는 데 상대적으로 적은 양의 리소스가 필요하므로 HTTP 요청을 매우 빠르게 처리합니다. 이 기능은 미리 말하기 어려운 시스템으로 작업하는 일부 개발자에게 결정적일 수 있습니다.

Phalcon은 개발자에게 원시 SQL 방언인 PHQL과 같은 데이터 저장 도구와 MongoDB용 개체 문서 매핑을 제공합니다. 이 프레임워크의 다른 기능으로는 템플릿 엔진, 양식 작성기, 애플리케이션 개발 용이성, 국제 언어 지원 제공 등이 있습니다. Phalcon은 다양한 REST API를 생성하고 본격적인 웹 애플리케이션을 개발하는 데 이상적입니다.

장점:

  • 고속 및 낮은 과부하
  • 고유성 - 이 프레임워크는 C 프로그래밍 언어의 확장으로 만들어졌습니다.
  • 매우 우수한 내장 보호 기능
  • 엄청난 양의 문서
  • 개발자 중심

결점:

  • HHVM에서는 작동하지 않습니다.

심포니


필요한 PHP 버전은 5.5.9입니다.

Symfony는 웹 사이트 및 웹 애플리케이션 개발에 가장 많이 사용되는 프레임워크입니다. Symfony 구성 요소는 Drupal, phpBB 및 eZ Publish와 같은 애플리케이션을 구축하는 데 사용된 관련 없는 재사용 가능한 구성 요소 모음입니다.

장점:

  • 바이트코드 캐싱 덕분에 고성능
  • 신뢰할 수 있음
  • 우수한 문서화, 유지보수성
  • 좋은 지원; 완전히 형성된 프레임워크

결점:

  • 좋은 문서가 있음에도 불구하고 이 프레임워크는 숙달하기가 매우 어렵습니다.

코드이그나이터

필수 PHP 버전 - 5.4

CodeIgniter는 메모리를 거의 차지하지 않는 강력한 PHP 프레임워크입니다. 완벽하게 작동하는 웹 애플리케이션을 만들기 위해 간단하고 우아한 개발 키트가 필요한 개발자를 위해 만들어졌습니다.

장점:

  • 주로 개발자에게 집중
  • 추가 종속성 또는 기타 지원이 필요하지 않습니다.
  • MySQL과 같은 표준 데이터베이스를 사용하여 일반 웹 호스팅 서비스를 사용할 수 있는 기능
  • 대부분의 다른 프레임워크(비MVC)보다 성능이 우수합니다.
  • 좋은 문서와 LTS(장기간 지원)

결점:

  • 반면 누락된 네임스페이스는 속도를 높일 수 있습니다.
  • 다른 유사한 프레임워크와 달리 단위 테스트에 불편함
  • 프레임워크에 직접 내장된 소수의 라이브러리
  • 최신 PHP 기능을 지원하지 않는 다소 오래된 프레임워크입니다.
  • 매우 명백하고 수년 동안 개발 팀에서 수정하지 않은 보안 문제의 존재

케이크PHP

필요한 PHP 버전은 5.5.9입니다.

CakePHP는 애플리케이션 개발 프로세스를 단순화하고 가속화하는 프레임워크이며 훨씬 적은 코드가 필요합니다. 이것은 강력한 코드 생성 시스템뿐만 아니라 데이터베이스에 대한 보다 유연한 수준의 액세스를 제공하는 PHP 7용 최신 프레임워크입니다. 이러한 기능 덕분에 작고 복잡한 시스템을 개발하는 것이 더 쉽고 빠르며 물론 더 즐거워집니다. 빠른 개발을 원하신다면 CakePHP가 바로 여러분이 찾던 것입니다.

장점:

  • PHP 버전 5.5 이상을 지원하는 최신 프레임워크
  • 강력한 코드 생성 시스템, 신속한 개발 능력
  • 상용 웹 애플리케이션 개발에 매우 ​​적합(MIT 라이센스)
  • 내장 데이터베이스 액세스, 캐싱, 유효성 검사 및 인증
  • 광범위한 스토리지 도구에는 교차 사이트 스크립팅이 포함됩니다.
  • SQL 인젝션 뿐만 아니라 스크립트 인젝션으로 사이트 간 공격 방지
  • CSRF 및 양식 유효성 검사
  • 좋은 문서를 가지고
  • 적극적으로 개발

결함:

  • Laravel 또는 위의 다른 프레임워크만큼 Restful API 개발에 적합하지 않음

젠드


필수 PHP 버전 - 5.6, 7.0

Zend는 1억 5,800만 번 이상 설치된 전문 PHP 확장 모음인 프레임워크입니다. 이 프레임워크는 PHP 5.6+를 사용하여 웹 애플리케이션 및 서비스를 개발하는 데 사용되며 광범위한 프로그래밍 언어 기능을 사용하여 100% 객체 지향 코드를 보장합니다.
Zend 프레임워크는 Composer를 사용하여 패키지 종속성을 주입합니다. PHPUnit - 모든 패키지 테스트용; Travis CI - 지속적인 통합 테스트를 위한 서비스로.

장점:

  • 상용 애플리케이션 개발에 이상적
  • 객체 지향
  • 유효성 검사, 피드 및 양식을 위한 많은 구성 요소
  • 관련 없는 구성 요소 포함

결점:

  • 다른 프레임워크만큼 빠른 애플리케이션 개발에 적합하지 않음

연료PHP


필요한 PHP 버전은 5.3.3입니다.

FuelPHP는 PHP 버전 5.3 이상을 위한 간단하고 유연한 사용자 지향 프레임워크로, 다른 프레임워크의 모든 최고의 아이디어를 통합하고 방금 출시되었습니다!

장점:

  • 캐싱은 선택 사항입니다.
  • 패키지 인증
  • 지속적인 발전 가능성
  • URL 라우팅
  • 새 버전은 완전히 객체 지향적이며 링커를 사용하여 설치할 수 있으며 단일 설치 후 여러 응용 프로그램을 지원할 수 있습니다.

결점:

  • 초보자가 배우기에 상당히 복잡한 프레임워크(소량의 문서)
  • 지금까지 어디에서도 지원되지 않는 상당히 새로운 프레임워크입니다.
  • 오픈 소스 소프트웨어 커뮤니티의 소액 투자(예: Laravel 또는 Phalcon과 비교)

날씬한


필수 PHP 버전 - 5.5

Slim은 작지만 강력한 웹 애플리케이션 및 API를 빠르게 개발하는 데 도움이 되는 PHP용 마이크로 프레임워크입니다.

장점:

  • 사용 가능한 가장 빠른 RESTful 프레임워크입니다.
  • 이 프레임워크로 작업을 성공적으로 시작하기에 충분한 양의 문서가 있음
  • 소규모 RESTful API 개발에 적합
  • 적극적으로 개발

결점:

  • 설치 시 가능한 적은 수의 링커 추가 기능 제안

phppixie


필요한 PHP 버전은 5.3입니다.

Phpixie는 가장 인기 있는 포괄적인 PHP 프레임워크 중 하나입니다. 여기에는 기본적으로 훌륭한 암호화 및 보안 도구, MongoDB 지원, 링커와 코드를 "교환"하는 기능이 포함됩니다.

장점:

  • 비교적 새로운 프레임워크
  • 시작하기 쉬운 프레임워크
  • 문서에는 코드 사용 방법에 대한 예제가 포함되어 있습니다.
  • 좋은 라우팅 시스템
  • 코드를 빠르게 컴파일하는 기능
  • HMVC 지향

결점:

  • 몇 가지 모듈
  • 종속 개체와 독립적으로 생성된 구성 요소에 대한 지원 없음

무 지방


필수 PHP 버전 - 5.5

강력하면서도 사용하기 쉬운 PHP용 미니 프레임워크로, 동적이고 강력한 웹 애플리케이션을 개발하는 데 도움이 되며 무엇보다 매우 빠르게 수행할 수 있습니다!

장점:

  • 최소한의 메모리를 차지합니다.
  • 배우기 쉬운
  • URL 라우팅 최적화, 캐시 모델, 코드를 빠르게 처리
  • 다국어 응용 프로그램에 적합
  • SQL 또는 No SQL 지원 준비 완료
  • 데이터베이스 가용성
  • 단위 테스트, 이미지를 포함한 많은 소프트웨어 패키지
  • 소스 파일 처리, JavaScript/CSS 최적화, 데이터 검증, Open ID 등

결점:

  • 마이크로 프레임워크에 너무 많은 것
  • 위의 프레임워크와 비교할 때 새로운 옵션이 없습니다.
  • 이 문제를 해결하는 다른 MVC 프레임워크와 달리 코드 반복을 허용합니다.

이이 2.0

이점:

  • 쉬운 설치
  • Yii는 완전한 객체 지향 프레임워크이며 고급 PHP 기능을 최대한 활용합니다.
  • Yii 프레임워크는 필요에 맞게 쉽게 사용자 정의할 수 있습니다. 프레임워크의 거의 모든 구성 요소는 확장 가능합니다.
  • Yii는 Codeception과 긴밀하게 통합되어 있습니다.
  • Yii는 보다 안전한 애플리케이션을 구축하는 데 도움이 되는 몇 가지 방법을 제공하는 보안 구성 요소와 함께 제공됩니다.
  • Yii는 우선 순위가 아닌 작업에 소요되는 시간을 줄이고 주요 작업에 집중하는 데 도움이 되는 몇 가지 도구를 제공합니다.
  • 최고의 성능을 위한 손쉬운 설정

결점:

  • 강력한 클래스 결합. 시스템의 모든 것은 CComponent에서 상속됩니다. 정적 메서드를 통해 모델에 액세스하여 필요하지 않은 경우에도 모델을 사용할 수 있습니다.
  • 템플릿 엔진 통합(Twig, Smarty)은 네이티브 템플릿에 비해 다소 약합니다. 그리고 기본 사용은 사냥이 아닙니다.

영기


필수 PHP 버전 - 5.4

Aura 프로젝트는 모든 소스 코드 기반에서 사용할 수 있는 고품질의 잘 테스트되고 표준을 준수하며 독립적인 시맨틱 버전 관리 라이브러리 패키지 모음입니다.

각 라이브러리는 독립 실행형이며 기본적인 목적을 위한 필수 요소만 포함합니다. 각 라이브러리 패키지는 완전히 독립적입니다. 프레임워크뿐만 아니라 다른 패키지와도 연결됩니다. 따라서 이 기능은 개발자에게 이 프레임워크의 일부 또는 전체 프레임워크를 사용할 수 있는 기회를 제공합니다.

장점:

  • 메모리를 거의 차지하지 않음
  • 프레임워크 시작을 위한 가이드 제공
  • 소규모 REST API 작업에 적합
  • 현재 활발한 개발 중
  • 애드온에는 HTTP 캐싱 및 플래시가 포함됩니다.

그게 다야! 모든 PHP 프레임워크에 대한 이 목록과 설명이 도움이 되기를 바랍니다. 어떤 PHP 프레임워크를 사용하고 있습니까? 댓글로 알려주세요

이 문서에서는 내용을 단순하게 유지하기 위해 기술 용어 및 개념을 다루지 않습니다. 당신이 프로그래머라면 당신이 선호해야 하는 이유를 말씀드리겠습니다. 순수한 PHP 대신 프레임워크 사용당신의 프로젝트를 위해. 당신이 기업가라면 당신의 소프트웨어 개발자가 개발된 웹 애플리케이션 및 웹사이트~을 통해 PHP 프레임워크.

비교 순수한 PHP 및 PHP 프레임워크수학과 같을 수 있습니다.

어려운 수학 문제를 풀려면 종이 한 장을 가져가거나 공학용 계산기를 사용하여 풀 수 있습니다.

종이에서 수학 문제의 답을 찾는 것은 순수한 PHP로 코딩하는 것과 같고 공학용 계산기를 사용하는 것은 프레임워크를 사용하여 코딩하는 것과 같습니다.

그래서 내가 무엇을 의미합니까?

기본 PHP - 종이 수학

좋은 학생은 몇 단계로 문제를 해결할 수 있습니다. 정확도 수준 - 75%에서 100%까지.

평범한 학생은 문제를 풀 수도 있고 풀지 못할 수도 있습니다. 그는 같은 문제를 풀기 위해 몇 가지 단계를 적을 것입니다. 여기서 정확도 수준은 50%에서 75%입니다.

나쁜 학생은 문제를 전혀 풀 수 없습니다. 그러나 문제를 해결하기 위한 많은 단계를 기록합니다. 정확도 수준 - 0%에서 50%까지.

공학용 계산기

모든 학생이 계산기 사용법을 배우면 100% 정확도로 문제를 풀 수 있습니다. 계산기의 미리 정의된 공식은 정확한 결과를 더 빨리 제공합니다.

순수한 PHP의 문제

순수한 PHP사람들이 자신의 논리를 쓰기 시작하면 까다로워집니다. 누군가는 몇 줄의 코드로 작업을 해결할 수 있지만 누군가는 수백 줄로도 할 수 없습니다. 결과적으로 둘 다 서로의 코드를 읽을 수 없습니다. 여기서 시작되는 문제는 불일치입니다.

프레임워크를 선택하는 이유는 무엇입니까?

이 프레임워크는 안정성, 일관성 및 상당한 시간 절약을 제공합니다. 풍부한 기능 세트가 있으므로 바퀴를 다시 발명할 필요가 없습니다. 개발을 위한 거의 모든 기능을 사용할 수 있습니다. PHP 웹 애플리케이션. OOP 스타일로 설계되었기 때문에 기존 기능을 확장하여 애플리케이션을 완전히 제어할 수 있습니다. 프레임워크는 물론 의도적으로 그렇게 하지 않는 한 나쁜 코드를 작성하는 것을 허용하지 않습니다. 팀으로 작업할 때 전체 모듈 통합이 매우 쉬워지고 프레임워크는 서로의 코드를 이해하는 데에도 도움이 됩니다.

프로젝트 개발을 시작하면 처리해야 할 사항이 많습니다. 프레임워크는 우리를 위해 모든 작업을 수행하므로 애플리케이션이 깨끗하고 안전하다는 것을 확신할 수 있습니다. MVC 패턴모든 것의 핵심 요소 중 하나입니다. 최신 PHP 프레임워크, 논리와 표현을 분리하는 것은 매우 좋은 습관입니다.

프로젝트 수정

조만간 자신에 대한 좋은 인상을 남기면 고객은 사이트를 개선하기 위해 다시 돌아올 것입니다. 그리고 여기에 중요한 점이 있습니다. 프로젝트가 순수한 PHP, 고객의 새로운 희망을 충족시키기 위해 매우 열심히 노력하거나 프로젝트에 대한 추가 작업을 완전히 포기해야 합니다. 그러나 프로젝트가 완료되면 프레임 워크 내에서, 이 경우 선택한 기술의 모든 힘과 아름다움을 느낄 것입니다. 변경 사항을 적용하고 업데이트된 프로젝트를 고객에게 다시 제공하기만 하면 됩니다.

그럼 정말 순수한 PHP는 너무 나쁩니다.?

절대적으로하지. 순수 PHP는 프레임워크의 논리를 이해하는 데 도움이 됩니다. 당신의 논리적 사고는 다음과 같이 향상될 수 있습니다. 순수한 PHP. 그러나 기본 PHP는 나쁜 프로그래머의 책상에 부딪힐 때만 나빠집니다. 코딩 경험 없이 프레임워크에 뛰어들지 마십시오. 순수한 PHP. 또한 코딩을 시작하기 전에 프레임워크의 전체 문서를 읽어야 합니다. 요즘 사용하는 것이 "유행"이 되었기 때문입니다. 기본 PHP그러나 이것은 그러한 유용한 도구를 사용하는 절대적으로 잘못된 방법입니다.

일반적으로 프레임워크가 무엇인지 파악하는 가장 쉬운 방법은 제 강의를 듣는 것입니다.

우리는 언어 작업을 위한 가장 인기 있고 유용한 도구에 대해 계속해서 이야기합니다. 이번에는 PHP 프레임워크에 중점을 둘 것입니다.

라라벨

이 프레임워크는 PHP 운동의 선두주자 중 한 사람에게 유망한 것에서 먼 길을 왔습니다. 간략한 설명은 오픈 소스, MVC 아키텍처 모델 작업, 편리하고 이해하기 쉬운 인터페이스, 확장된 기능입니다.

마지막 요점은 다음 가능성에서 나타납니다.

  1. 상당한 수의 타사 모듈을 지원하여 프레임워크의 표준 기능을 크게 확장합니다.
  2. 작업하는 동안 링크를 업데이트하는 데 시간을 낭비하지 않도록 하는 리버스 라우팅 - 모든 것이 자동으로 발생합니다.
  3. 데이터베이스 개체 간의 엄격한 관계를 정의하는 데 도움이 되는 Eloquent ORM 디자인 패턴입니다.
  4. 자동 클래스 로딩. 이것은 한편으로 include ...를 작성할 필요가 없기 때문에 코드의 양을 줄이는 반면, 사용하지 않는 클래스는 모든 결과에 포함되지 않습니다.
  5. 단위 테스트 - 오류 계층화를 방지하기 위한 많은 수의 테스트가 있습니다.
  6. 데이터베이스 버전 제어 시스템. 제품을 관련 없이 자주 업데이트할 것으로 예상되는 경우 이 기능을 사용하면 동일한 유형의 게시물에 시간을 낭비하지 않아도 됩니다.

아시다시피 이것은 Laravel 개발자가 클라이언트에게 제공하는 기능의 전체 목록이 아닙니다. 전체 목록을 보려면 공식 웹 사이트를 방문하거나 이 프레임워크의 세계에 개인적으로 뛰어드십시오. 확실히 좋아할 것입니다.

코드이그나이터

이미 11년 이상 된 이 프레임워크는 사용된 리소스에 대한 소박함, 단순성, 편의성, 모든 수준의 개발자를 위해 설계된 엄청난 양의 문서 및 제한이 없기 때문에 명성을 얻었습니다. 한때 Laravel은 CodeIgniter의 경쟁자로 정확하게 만들어졌기 때문에 최근까지 보편적인 벤치마크였습니다.

CodeIgniter는 널리 사용되는 프레임워크만큼 단순함에도 불구하고 다음과 같은 몇 가지 유용한 기능을 제공합니다.

  1. 라이브러리, 모듈, 템플릿 및 문서를 포함하여 CodeIgniter Reactor 커뮤니티의 뛰어난 지원.
  2. SQL 구문과 매우 유사한 데이터베이스 템플릿입니다.
  3. 서버 측에서 캐시하는 기능.
  4. 패키지 관리자를 사용하여 명령줄에서 라이브러리를 빠르게 포함합니다.

그러나 CodeIgniter는 단순성과 접근성이라는 주요 아이디어에서 벗어나지 않을 것입니다. 따라서 공식적으로는 가능하지만 이 프레임워크가 모든 작업을 수행할 때까지 기다릴 필요는 없습니다.

심포니

세 번째 버전이 2015년에 출시되었음에도 불구하고 독보적으로 프레임워크 중 인기 3위를 차지하고 있는 것은 Symfony의 두 번째 버전입니다. 그 이유는 CodeIgniter와 유사합니다 - 속도와 전반적인 단순성. 그러나 이것이 기능에 위배되지 않도록 사용자는 프로필 작업을 위해 3가지 버전 중 하나를 선택하라는 메시지가 표시됩니다.

  1. Standard Edition - 서로를 알아가고 일반적인 작업을 수행하기 위한 것입니다. Hello World Edition 배포 키트는 벤치마크에서 추가로 사용할 수 있는 정확히 하나의 최적화 스크립트를 포함하는 이를 기반으로 합니다.
  2. Symfony CMF는 CMS 시스템으로 작업하는 개발자를 위한 적응입니다.
  3. REST 에디션 - REST 아키텍처(온라인 상점, 검색 엔진 등) 작업을 위한 최적화.

Symfony는 일반적으로 명령줄 애호가를 위한 프레임워크로 간주됩니다. 실제로 내장된 SensioGeneratorBundle 인터페이스는 한 줄의 텍스트에서 코드의 전체 골격을 얻는 데 도움이 됩니다.

확실한 이점은 러시아어로 된 공식 문서를 사용할 수 있다는 것입니다. Symfony의 첫 번째 버전에서만 사용할 수 있다는 점을 언급할 가치가 있지만 비공식 릴리스 중에는 공식 릴리스의 번역본과 독립적인 고품질 문서를 ​​모두 찾을 수 있습니다.

이이

Yii는 Symfony의 주요 경쟁자로 많은 평가를 받았습니다. 여기에는 실제로 이유가 있습니다. 두 언어 모두 전체 스택에서 작동하고 둘 다 GitHub에 소스 코드가 있으며 둘 다 템플릿 개발을 잘 나타냅니다. 그러나 Symfony는 모델과 컨트롤러만 제공하지만 Yii는 완전한 MVC 상호 작용을 제공합니다. 또한 Yii의 인터페이스는 훨씬 더 편리하고 Gii 브라우저 요소를 사용한 코드 생성은 여기에서 조금 더 강력하며 일반적으로 Yii는 개발 시간을 더 많이 절약하고 응용 프로그램이 조금 더 빠르게 작동합니다.

네트 프레임워크

아마도 최고 PHP 프레임워크 중 가장 덜 알려진 것일 것입니다. 13년의 역사와 다양한 기능을 감안할 때 놀라운 일입니다. 다음은 그 중 일부입니다.

  1. 가장 생산적인 PHP 프레임워크 중 하나입니다.
  2. 초보자에게 적합하며 학습 곡선이 매우 부드럽습니다.
  3. 도움이 되는 강력한 도구: Tracy - 버그 추적용, Latte - 빠르고 직관적인 템플릿 생성기, Tester - 실제 조건에 가까운 응용 프로그램의 고품질 테스트를 위한 유틸리티.
  4. 하나의 프로젝트에서 여러 개발자의 공동 작업 가능성.
  5. 훌륭한 문서와 친근한 커뮤니티(체코뿐만 아니라).

일반적으로 아직 Nette를 사용해 본 적이 없다면 권장합니다. 단점이 있으면 의견을 작성하십시오.

짧은 줄

CakePHP는 PHP에 중점을 둔 인기 있는 Ruby on Rails 클론입니다. 모든 혜택은 동일합니다.

FuelPHP는 고유성이 부족하고 높은 기대치로 인해 과소평가된 경량 ​​프레임워크입니다. 아시다시피 이것은 실제 작업에 더 나쁜 영향을 미치지 않습니다.

Phpixie - 이 프레임워크의 주요 "칩" 중 하나가 업데이트됩니다. 더 이상 새 버전을 받기 위해 몇 개월을 기다릴 필요가 없습니다. 발견 -> 수정 사항 업로드 -> 계속 작동합니다. 원리는 이렇습니다.

Fat-Free는 빠른 개발을 위한 매우 가볍고 빠르고 간단한 프레임워크입니다. 최소한의 불필요한 우려.

Slim은 배우기 쉽고 PHP로 시작하기 쉬운 프레임워크이지만 웹의 성인 전문 세계에서는 거의 사용되지 않습니다.

Phalcon은 고성능, 낮은 메모리 및 파일 시스템 사용량을 갖춘 훌륭한 프레임워크입니다. 빼기 - 프로젝트는 매우 조잡하고 수중 C-스톤이 많습니다.

편집자의 선택
제1장. 일반 조항 제1조. 이 연방법의 규제 대상 및 목적 1. 이 연방법은...

9월 9일 블라디미르 푸틴 러시아 대통령은 그의 법령에 따라 Anna Kuznetsova를 러시아 연방 대통령 산하 아동 권리 위원으로 임명했습니다. 에 대한...

그리고 러시아 청소년 연맹 국가위원회 (2007-2010), 제 5 차 구성 (2014-2017) 러시아 연방 공공 회의소 회원 ....

거의 빨간 커 미서는 친 정부 청소년 운동의 일환으로 추문적인 정치 활동 덕분에 명성을 얻었습니다 ...
청년은 자살하기 전 살해당한 교사의 시신 앞에서 '셀카'를 찍었다. 당연히 모든 것이 "유죄 ...
국제 패럴림픽 위원회는 2018년 패럴림픽에 러시아 선수들의 참가를 최종 결정했습니다. 기적이 아닌데...
청소년기 소녀에게 적합한 이발을 선택하려면 헤어 스타일을 만드는 것과 달리 진지하게 생각해야합니다 ...
전통에 따르면 러시아의 봄이 끝날 무렵 낚시 붐이 시작되는데 그 이유는 현재 비늘 모양의 물고기가 분명히 있기 때문입니다 ...
남자는 여자 친구를 다른 사람과 비교합니다. 한쪽 다리는 더 길고 다른 한쪽은 가슴이 더 크고 세 번째는 이미 부서장이지만 그녀는 아직...