2010-06-26 3 views
0

내가 가장 좋은 방법을 알고 싶습니다 (더 빠르고 더 좋은)는 PHP로 코드를 구조화합니다.구조체 또는 PHP에서 코드를 구조화하는 가장 좋은 방법은 무엇입니까?

일부 사람들은 함수, 하위 클래스 및 var가 포함 된 마스터 클래스를 $ modx CMS case와 같이 고유 한 전역 변수에 저장합니다.

구조 기술은 무엇입니까?
그리고 DB에 어떻게 연결합니까?
모두 PHPCake와 같은 PHP 프레임 워크를 선호합니까?
Plubic vars (구성) 및 Private vars (임시 또는 프로그램 실행 Vars)는 어떻게 구성합니까?

내 질문에 대한 이유는 강력한 기반으로 정적으로 프로그래밍을 시작하지 않는다는 것입니다. 현재 저는 ModX 프레임 워크/CMS로 프로그래밍하고 있습니다.

참고 : 답변에 -1을 투표 할 때마다 정당화하십시오. 사전 (불쌍한 내 영어 죄송합니다)

+0

질문이 매우 일반적으로 보입니다 ... 모든 경우에 하나의 전역 변수에 모든 것을 저장하는 것은 좋지 않습니다! – mexique1

+0

일반적인 방법 은요? 나는 각자가 더 나은 것을 사용하고 그런 방식으로 프로그래밍을 시작하기 위해 사용하는 구조를 알지 못한다. 내 영어로 죄송합니다 ... – CuSS

답변

2

더 빠르지 마세요.

빠른

순수 PHP는보다 빠르고 호환됩니다. 배포본은 더 작을 것입니다. 유지하는 것이 가장 쉬운가? 글쎄, 제대로 할 수 있습니다. Drupal이나 Wordpress와 같은 대규모 소프트웨어 프로젝트는 프레임 워크 기반 프로젝트가 순수 PHP보다 유지 관리가 쉽지 않음을 보여줍니다. 순수한 PHP에는 아직도 몇몇 붙박이 종류가있다, 그러나 이들은 궁극적으로 기능으로 감싼다. 오토로드는 좋지만 코드베이스가 커질수록 성능이 저하됩니다.

더 나은

프레임 워크 기반 프로젝트 유지하고 장기적으로 작업하는 것이 더 경향이있다. 그들의 특성상 속도가 느립니다 (자동 로딩은 포함 경로에 많은 경로가 있거나 잘못 포함 된 경로 포함). 또한 사전 설정 구조를 제공하여 다른 사람들이 점프하고 빨리 진행되는 것을 이해할 수 있습니다. 대부분의 젠드 프레임 워크 프로젝트는 동일하게 보이므로 어떤 코드가 실행되고 있는지 찾는 더 좋은 기회를 가질 수 있습니다. 성능 적중률과 opcode 캐시와 같은 외부 헬퍼가 필요합니다.

내 의견 '더 나은'옵션을

이동 : 자동 로딩과 프레임 워크. 많은 작업이 이미 완료되었으므로 제작 시간 측면에서 더 빨리 문을 닫을 수 있습니다. 지금 젠드 프레임 워크와 Doctrine을 제안합니다. 가장 빠른가요? 아닙니다. 그러나 유지 관리가 더 쉽습니다.

플랫 아웃 속도가 필요한 경우 코어 PHP 또는 자체 롤 하위 프레임 워크로 이동하십시오. ZF, 코드 이그니 터 (Code Igniter), 심포니 (symfony) 등 모든 핵심 PHP에 비해 성능이 뛰어납니다.

+0

+1 아무도 더 좋은 답변을 게시하지 않으면 매우 좋은 대답입니다. 나는 이것을 받아 들일 것입니다;) 한 가지 대답을하지 않았습니다 ... 원하는 구조는 무엇입니까? 정상적인 함수 또는 클래스 함수로 실행 중입니까? 예를 들어 DB에 연결하는 방법은 무엇입니까? Plubic vars (구성) 및 Private vars (임시 또는 프로그램 실행 Vars)를 어떻게 위협합니까? – CuSS

0

를 사용하여 자동로드에서

덕분에 싱글을 통해 클래스 및 액세스 인스턴스를로드 :

class DB extends mysqli{ 
    private static $instance; 
    private function __construct(){ 
    parent::__construct(DB_HOST,DB_LOGIN,DB_PASS, DB_DB); 
    $this->set_charset("utf8"); 
    $this->autocommit(false); 
    } 

    public static function i() { 
    if (!self::$instance instanceof self){ 
     self::$instance = new self;   
    } 
    return self::$instance; 
    } 
} 

사용 :

$res=DB::i()->query("SELECT * FROM whatever"); 

이 하나를 작성합니다 mysqli의 인스턴스와 DB :: i()에 접근 할 때마다 그 인스턴스를 리턴 할 것이다.

+0

클래스의 코드 흐름을 관리하는 데 사용합니까? – CuSS

0

나는 당신이 흥미를 가질 것이라고 생각한다. dependency injection 또한 자동로드를 사용한다 : 그것은 킬러 기능이다. DB의 경우 기본 PHP 데이터베이스 계층 인 PDO를 사용하십시오.

+0

PDO를 알지 못했습니다 ... 좋습니다. 어떻게 vars를 구성합니까? – CuSS

+0

-1로 투표 한 사람에게주는주의 사항 : 답변에 -1을 투표 할 때마다 정당화하십시오! – CuSS

+0

나는 일반적으로 내 클래스를 정적 ​​클래스 안에 래핑하여 일종의 namsepace를 제공합니다. PHP 5.3 네임 스페이스는 기본이기 때문에 많은 호스팅 회사에서 지원하지 않을 수 있습니다. 예를 들어, 제목, 키워드, 설명, 메타 로봇 ​​동작 및 css, js 및 rss가 포함될 배열이 포함 된이 Page 클래스 (페이지와 관련된 모든 변수를 저장하는 네임 스페이스)가 있습니다. 포함/표시. 매우 유용한 것으로 나타났습니다! – Savageman

0

프레임 워크를 사용하면 필요한 작업이 모두 완료되었으므로 처음부터 모든 것을 작성하는 것보다 나은 방법입니다.

MVC 패턴을 기반으로하는 프레임 워크를 사용하는 것이 좋습니다. 이렇게하면 코드가 모델, 뷰 및 컨트롤러로 나뉩니다. 사용자 인터페이스

  • 에 대한 코드를 넣어 어디 데이터를 관리하기위한 코드 (DB, ...)
  • 뷰는 어디다

    • 모델은 컨트롤러가 어디의 논리 귀하의 응용 프로그램이 간다.
  • +0

    좋은 구조는 구조가 다양합니다 ? – CuSS

    +0

    예, 대부분의 프레임 워크에 대한 기본 구조입니다. –

    관련 문제