2013-04-10 3 views
-3

저는 프로젝트에서 일하고 있습니다. 여기에 제 코딩 실습이 어떻게되어 있는지 나와 있습니다.당신은 PHP에서 전역 클래스를 사용해야합니까

  • 는 내가 구성 (예. $database = new Database())의 VITAL 클래스의 인스턴스를 생성 설정
  • 에있는 모든 클래스 파일을로드합니다. 중요하지 않은 클래스는 페이지 내에서 생성됩니다.
  • 페이지 내에서 데이터를 가져 오는 데 $database->query을 사용하기 만합니다.
  • 내부 기능 global $database으로 전화하여 거기에서 가져옵니다.

이 방법이 정상입니까? 실망한? 격려 한? 대형 프로젝트에서 작업 할 때 어떤 코드 구조를 구현합니까?

+1

나는 singletons와 같은 것을 권하고 싶습니다. – Appleshell

+1

가능한 [PHP 전역 함수] (http://stackoverflow.com/q/5166087/1409082) 및 [클래스의 전역 변수 사용] (http://stackoverflow.com/q/11923272/1409082). – Jocelyn

+0

질문을하는 것에 대해 유감스럽게 생각합니다. 여기에있는 모든 사람들이 저 위에 있습니다. – user2103849

답변

1

사용하지 않을 수도있는 수업을 시작하지 말고, 반드시 사용할 수업 만 시작하십시오. 다른 용도로는 autoloading 기능을 사용하십시오.

+0

와우, 내가 전에 자동로드에 대해 알고 싶습니다. – user2103849

+0

도움이된다면 답을 받아 들일 수 있습니다. –

-2

메서드를 정적으로 만들면 참조를 전달할 필요가 없습니다.

class Database { 
    static function query($...) {...} 
    ... 
} 

당신은 아마 아직도 생성자가 연결을 시작하려면,하지만이 완료되고 나면 단순히 Database::query(...)를 호출 할 수 있습니다.

+0

분명히이 것을 싱글 톤 클래스라고합니다. 나는 XD –

+0

질문에 대한 Adam의 의견을 읽을 때까지 데이터베이스 클래스가 새로운 MySQLi 객체를 생성한다는 것을 알지 못했습니다. 객체를 생성하고 쿼리를 실행할 때마다 연결할 필요가 없습니다. 그래서 내가 한 번 생성 한 다음 참조로 객체를 실제로 전달하지 않고 전체 실행 과정에서 다시 사용합니다. – user2103849

+0

그게 내가 설명하려고했던 것입니다. 생성자를 유지하고 코드 시작 부분에'new Database()'를 한 번 호출 한 다음'Database :: query()'를 사용하십시오. –

관련 문제