젠드 프레임 워크가 왜 그렇게 복잡한가?


42

저는 웹 개발자이며 PHP로 여러 웹 응용 프로그램을 개발 한 경험이 있습니다. 나는 스스로 제품을 개발할 생각이 있고 MVC에 대한 아이디어를 좋아하고 어려움없이 응용 프로그램을 쉽게 관리하고 수정할 수 있기 때문에 MVC 기반 프레임 워크를 사용하기로 결정했습니다.

Zend Framework를 선택했는데 새로운 프로그래밍 언어를 배우는 것보다 더 어려운 것 같습니다. 작은 응용 프로그램을 실행하기 위해 한 번에 너무 많은 일이 있습니다.

마찬가지로 라우팅에 대한 아이디어는 핵심 프로그래머에게는 새로운 것이기 때문에 매우 복잡합니다. 나는 여기에있는 사람들이 내가 묻는 것과 같은 수천 가지 질문을 읽었지만 밤새 Zend Framework를 배우고 싶지 않다는 것을 알고 있습니다. 나는 필요한만큼 많은 시간을 기꺼이 줄 것이지만 지금까지는 이해가되지 않습니다. Zend 라이브러리에는 수천 개의 클래스가 있지만 멍청한 놈은 특정 클래스를 사용할 위치와 사용 방법을 어떻게 알 수 있습니까? Zend Framework의 부트 스트랩과 매핑을 이해하는 것이 여전히 어렵다는 것을 알았습니다. 나는 매뉴얼을 읽고 따르고 일이 시작되지만 실제로 실제로 어떻게되는지 정확히 알지 못합니다.

또한 모델, 뷰 및 컨트롤러가 함께 작동하는 방법과 Zend Framework에서 응용 프로그램을 계획하는 방법에 대한 단서가 없습니다. 핵심 PHP에 관해서는 정확히 무엇을 해야하는지 생각하고 코드로 쉽게 번역하는 것이 아니라 Zend Framework에서 아이디어를 번역하는 방법을 모릅니다.


10
MVC를 처음 사용하는 경우 본격적인 것을 사용 하기 전에 MVC 스캐 폴드를 직접 구현하십시오 . 학습하기에는 좋지 않습니다.
treecoder

2
@greengit 내가 그랬어!
Kyle Hodgson

Zend Framework는 어렵지 않습니다. 잘못된 문서로 인해 배우는 데 약간의 시간이 필요하지만 매우 강력한 프레임 워크임을 보장 할 수 있습니다. 우리는 ZF2에서 큰 엔터프라이즈 소프트웨어를 구축했으며 ZF에서 구성 유연성이 뛰어납니다.
albanx

답변:


38

젠드 프레임 워크는 어렵다. 엔트리 레벨 프레임 워크로 구축되지 않았으며, 관련된 개념에 대한 지식은 1 로 가정 합니다. 즉, Zend Framework 2.0첫 번째 요구 사항은 조금 더 쉽게 만드는 것입니다.

학습 곡선 완화

2009 년 말, 프레임 워크 사용자를 대상으로 설문 조사를 실시하여 사용 대상, 사용 환경 및 요구 사항을 파악했습니다. 가장 중요한 문제는, 틀을 배우는 것이 어렵다는 점입니다. 이러한 문제 중 일부는 다음과 같습니다.

  • 프레임 워크와 함께 "처음 1 시간"에 어려움이 있습니다.
  • 빠른 시작 후 "다음 단계"에 대한 불확실성.
  • 소스 코드 자체에 일관성이없는 API가 있습니다. 한 구성 요소는 "플러그인", 다른 "도우미"및 또 다른 "필터"를 사용할 수 있습니다.
  • 확장 점이 존재하는 위치 및 프로그래밍 방법에 대한 불확실성.
  • Zend Framework를 MVC 스택 또는 개별 구성 요소로만 사용할 수 있는지에 대한 혼란.

따라서 그것은 당신뿐만 아니라 모든 사람에게 어렵습니다-전체 위키 페이지를 읽으십시오. 불필요하게 복잡한 것으로 식별되는 몇 가지가 있습니다. 그러나 위의 요구 사항이 충족 되더라도 여전히 엔트리 레벨 프레임 워크가되지는 않습니다. 이는 학습해야하는 프레임 워크가 아니라 관련된 개념을 실제로 이해했을 때 사용해야하는 프레임 워크라는 의미입니다.

여전히 배우고 있으므로 자신의 MVC 아키텍처를 구축하는 것이 훨씬 더 가치가 있습니다. Rasmus Lerdorf의 악명 높은 2 " 프레임 워크없는 PHP MVC 프레임 워크 "블로그 게시물은 프레임 워크 나 다른 타사 라이브러리없이 절차 적 PHP를 통해 MVC를 매우 간단하고 깔끔하게 보여줍니다.

그러나 실제로 프레임 워크를 배우고 싶다면 완전히 터진 프레임 워크 대신 마이크로 프레임 워크 를 고려해야합니다 . Slim 은 매우 작고 깨끗하며 철저히 테스트 된 코드 기반을 가지고 있으며 학습에 이상적입니다. 나는 다른 마이크로 프레임 워크를 가지고 놀지 않았으므로, 당신은 당신 자신의 연구를하고 어느 것이 당신에게 더 좋은지를 결정해야합니다.

그리고 라우팅에 대한 빠르고 더러운 소개를 보려면 이 질문에 대한 나의 대답 을 참조하십시오 . 파악하기가 매우 어려운 개념은 아니지만 Zend Framework는 실제보다 훨씬 더 많이 보이게 만듭니다 .

1 ZF에 대해 읽은 가장 좋은 설명 은 애플리케이션 프레임 워크가 아니라 프레임 워크 구축 프레임 워크라는 것입니다. 원시 기능이며 극도의 기능 목록은 중소 규모 웹 사이트에는 적합하지 않습니다. 불행히도 내가 그것을 읽는 곳을 실제로 찾을 수 없습니다.

2 블로그 게시물 상단의 고지 사항을 읽습니다.


@Karpie의 의견에서 영감을 얻은 업데이트 :

프레임 워크는 어렵지 않아야하며, 프레임 워크의 요점은 작업을 더 쉽게 만드는 것입니다. ZF가 관련된 개념을 확실히 이해하더라도 ZF가 적합하지 않을 수 있습니다.

프레임 워크를 선택할 때 많은 주관적인 요소가 있으며, 다른 모든 프레임 워크에 반드시 필요한 기능이없고 직접 작성할 수 없다면 ZF를 피하고 더 자연스러운 느낌의 프레임 워크를 사용해야합니다.

개념을 안다면 프레임 워크가 방해를받지 않아야합니다.


3
개념에 대한 지식이 있어도 들어가기가 어렵고 정직하기는 노력할만한 가치가 없다고 생각합니다. 문서가 잘못된 경우가 많으며 일반적으로 웹 사이트가 만료 된 후의 웹 예제는 일반적으로 IRC 지원 채널이 종료되었으며 내가 본 것으로부터 지원을받을 수있는 다른 곳이 없습니다.
sevenseacat

@Karpie 솔직히 그렇게 힘들지는 않습니다. 그러나 관용적이므로 일부 개발자보다 다른 개발자에게 더 잘 맞습니다. 예를 들어 CodeIgniter보다 이해하기가 쉽지만 개인 프로세스 때문입니다. 나는 문서보다 코드를 읽는 것을 선호하며 CI의 코드는 허풍으로 가득 차 있습니다. 그러나 대부분의 개발자들에게 CI는 ZF보다 배우기가 훨씬 쉬우 며, 모든 사람들이 CI의 코드가 쓰레기로 가득하다는 데 동의하지는 않습니다. 중요한 것은 프레임 워크가 항상 다른 경우가 있으면 사용하기가 어렵다는 것입니다.
yannis

Zend Framework 1은 비교적 이해하기 쉽습니다. 그러나 당신은 ZF2의 기본 개념이 더 쉬워 졌다고 말했습니다 . 전보다 훨씬 복잡 하다고 생각합니다 .
777에

ZF2의 모든 것은 지나치게 복잡합니다. 젠드 "프레임 워크"를 모듈 / 라이브러리 모음으로 제시해도 좋습니다. 실제 프레임 워크가 없습니다. 모델 계층이 없으므로 일반적으로 엉망인 자체 구현하거나 일부 통합이 필요한 Doctrine을 사용해야합니다. 일부 단위 테스트를 작성하려면 테스트를 부트 스트랩하기 위해 매뉴얼을 해독하고 코드를 작성 (또는 온라인으로 찾으려고 시도)하는 데 엄청난 시간이 소요됩니다. 그것이 건전한 개념을 중심으로 구축 될 수 있지만, 그 개념에 대한 해석은 끔찍합니다.
vladko

11

Zend Framework를 사용하기 시작했을 때 검색 기능이 부족한 것을 좋아하지 않았습니다. 너무 많은 클래스가 배열에 의존하기 때문에 정의 할 수있는 키를 찾아야합니다.

명확한 설정 방법이나 이름있는 매개 변수를 갖는 것은 전혀 잘못이 아닙니다. imo는 발견 가능성을 돕는 데 먼 길을 갔다.

Yii 프레임 워크는 이런 종류의 상황에서 훨씬 더 나쁩니다.


3
+1 ZF / ZF2의 흡수를 진지하게 고려하지 않은 나의 중요한 이유는 추악하고 자동 완성 / 힌팅이며 지능적인 닷지 배열 기반 구성이어야합니다. OO 세계에서 어레이를 과도하게 사용하는 것에 대한 개인적 싫어함을 침해합니다.
Gavin Howden

1
정확하게 내 의견도.
Daniel

나는 Yii 1을 너무 어렵게 생각하지 않습니다. 어쩌면 그것은 나를위한 것일 수도 있습니다. : P
Eugine Joseph

5

ZF와 관련된 몇 가지 문제로 인해 초보자에게는 어려움을 겪습니다.

ORM은 포함되어 있지 않습니다 . 이것이 현대 MVC 프레임 워크의 기반이되어야한다고 생각할 것입니다. 그러나 ZF Zend_Db_Table는 엄청나게 낮은 수준입니다. Doctrine을 사용할 수는 있지만 ZF와 통합되어있는 것은 아닙니다.

읽을 수없는 부풀린 URL 라우터 . 예를 들어 가장 간단한 라우팅을 정의하려면 9 줄의 코드가 필요합니다.

$route = new Zend_Controller_Router_Route(
    'archive/:year',
    array(
        'controller' => 'archive',
        'action'     => 'show'
    ),
    array('year' => '\d+')
);
$router->addRoute('archive', $route);

이와 관련하여 많은 양의 질문이 주어지면 대부분의 사람들에게 간단합니다. 또한, 나는 그것을 도울 수 없으며 장고와 비교할 수 있습니다.

url(r'^archive/(?P<year>\d+)/$', 'archive.show')

Zend_Acl대부분의 사용 사례에서 복잡한 방법입니다. 일반적으로 사용자를 식별하기위한 인증이 있습니다. 인증 된 사용자에게만 일부 컨트롤러에 대한 액세스를 쉽게 제한하는 옵션이 있습니다. 많은 사용자의 경우 충분합니다. 더 복잡한 경우 사용자에게 특정 작업을 수행 할 권한이 있는지 확인하는 것은 컨트롤러의 비즈니스 로직에 달려 있습니다. ZF에는 인증 된 사용자에게만 액세스를 쉽게 제한 할 수있는 옵션이 없습니다. 표준 방법은 실제로 얼마나 간단한 지에 관계없이 ACL 및 역할 시스템을 사용하는 것입니다.

부풀어 오른 디렉토리 및 파일 레이아웃 . 권장되는 디렉토리 구조 는 다음과 같습니다.

<project name>/
    application/
        configs/
            application.ini
        controllers/
            helpers/
        forms/
        layouts/
            filters/
            helpers/
            scripts/
        models/
        modules/
        services/
        views/
            filters/
            helpers/
            scripts/
        Bootstrap.php
    data/
        cache/
        indexes/
        locales/
        logs/
        sessions/
        uploads/
    docs/
    library/
    public/
        css/
        images/
        js/
        .htaccess
        index.php
    scripts/
        jobs/
        build/
    temp/
    tests/

4

젠드 프레임 워크는 프레임 워크처럼 작동하는 독립적 인 라이브러리들과 같습니다. 동시에 분리되어 "사용하기 쉬운"무언가를 개발하는 것은 매우 어렵습니다. "사용하기 쉬운"이란 몇 줄의 코드로 복잡한 작업을하는 것을 의미합니다.

따라서 Zend로 시작하는 것은 CakePHP와 같은 다른 프레임 워크보다 어렵습니다. 그러나 더티 코드없이 응용 프로그램을 쉽게 확장하고 사용자 정의 할 수 있습니다. Zend는 또한 코드 전체에서 표준 및 디자인 패턴을 따르므로 프레임 워크 코드를 읽은 후 진행 상황을 추측 할 수 있습니다.

모델, 뷰 및 컨트롤러가 함께 작동하는 방식에 대한 단서가 없다고 말할 때 프레임 워크를 비난하지 마십시오. MVC는 다른 프레임 워크와 마찬가지로 MVC를 구현합니다. 모델을 데이터베이스 구조와 분리한다는 점을 제외하면 많은 프레임 워크에서 동일한 클래스로 구현됩니다. 따라서 Zend_Db_Table, Zend_Db_Table_Row, Zend_Db_Table_Rowset 등과 같은 많은 클래스에 직면하게됩니다 .

그래서 Zend Framework는 매우 분리되어 ZF를 사용하지 않는 다른 프로젝트에서 클래스를 사용할 수 있기 때문에 더 복잡하다고 생각합니다.


3

Zend Framework는 OOP 및 디자인 패턴에 대한 견고한 접지가 필요합니다. 내 경험으로는 Zend Framework에 익숙해지는 숙련 된 Java-JEE-Struts-Spring Programmer 만 찾을 수 있습니다. 평균 PHP 개발자는 Zend Framework의 개념과 아키텍처를 요약하기가 어렵다는 것을 알게되었습니다. 그러나 이봐! 젠드 프레임 워크 (Zend Framework)는 처음부터 PHP를 생성하는 회사 '젠드 (Zend)'에서 나왔습니다. 그래서 아마 존중하지 않으면 약간의 생각이 필요합니다!


1
Rasmus Lerdorf는 PHP를 개발했으며 zend는 PHP를 강력하게 후원합니다. 내가 기억하는 것에서.
Sarmen B.

캔트가 동의하지 않습니다. Java 개발자입니다. ZF를 쉽게 찾을 수있을뿐만 아니라 다른 프레임 워크보다 선호했습니다.
jkushner

-2

Zend는 일을 복잡하게 만드는 것이라고 생각합니다. MVC는 논리적으로 일반 PHP처럼 작동하는 사기입니다. 그러나 다른 디렉토리에서 파일을 분리하는 것과 같이 MVC 앞에서 개발하고 있습니다.

젠드가 매우 안전하고 해킹 할 수 없다고 말하는 사람은 큰 바보입니다. Zend는 Mysql injection protection을 사용하지 않으면 쉽게 해킹 할 수 있습니다. MVC가 함수, 클래스 및 기타 핵심 자료를 컨트롤러라는 하나의 디렉토리에 저장 한 다음 필요한 다른 디렉토리에 웹 페이지를 추가하는 것처럼 MVC처럼 파일을 다른 디렉토리에 분리하여 제안합니다. 이 디렉토리가보기로 알고있는 모든 기능 파일을 포함합니다. javascript 및 css 파일을 model이라고하는 다른 디렉토리에 배치하십시오.

이 세상에서 많은 사람들은 항상 이해하기가 복잡하기 때문에 일을 더 복잡하게 만들기 위해 열심히 노력한다는 것을 기억하십시오.

PHP는 책과 교사로부터 배우는 언어입니다. Zend는 고객을 위해 일을 복잡하게 만드는 프레임 워크가 아닙니다. 따라서 고객에게 수정이 필요할 때마다 실제 개발자에게 돌아가고 개발자는 더 많은 비용을 청구합니다. Zend는 그저 거짓말만으로 보호되며, 일반 PHP 코딩과 같은 단일 실수로 웹 사이트를 해킹 할 수 있습니다.


-6

프레임 워크를 친숙하게 만들기 위해서는 최소한 "빠른 시작"이 더 쉬워야합니다 ..... 더 나은 것을 선호하는 경우 "ZF는 최고의 PHP 프레임 워크입니다"라고 말하고 그렇지 않으면 그렇지 않습니다. ZF-2를 다운로드하여 사용해 보았습니다 (솔직히 ZF 초보자). 안타깝게도 인터넷에서 간단한 프로젝트 스켈레톤으로 "빠른 시작 안내서"를 찾지 못했습니다. 내가 찾고있는 것은 라이브러리 파일을 포함시키고 MVC 기능으로 프로젝트 폴더를 만드는 간단한 방법입니다. Codeigniter, Cake php, Yii를 사용했지만 꽤 비우호적이라는 것을 알았습니다. 예, Zend가 PHP를 업그레이드한다는 것을 알고 있지만 이것이 최고의 프레임 워크 또는 당신이 말할 것임을 의미하지는 않습니다.


싫어하는 계속 .... LOL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.