코딩시 가이드

Prefix

새로운 Class를 생성하거나 View 페이지로 데이터를 전달하는 경우 고유의 Prefix 를 붙이는 것이 좋습니다. Class 의 경우에는 고유의 namespace 를 사용하는 것도 방법입니다.

Namespace

사용자가 정의하는 namespace 의 시작은 Framework, Bundle, Core 를 사용할 수 없습니다.

ClassPath

솔루션에서 Class 를 로드하는 경로는 module 폴더 아래 입니다. Class 의 이름은 파일명과 동일해야하고, namespace는 폴더 경로와 동일해야 합니다.

namespace Component\Cart; class Cart{} 의 경우 파일의 경로는 module/Component/Cart/Cart.php 입니다.

ClassLoader

솔루션에서 정의한 ClassLoader는 솔루션과 사용자가 동일한 namespace 와 Class 를 생성 할 경우 사용자가 정의한 Class 를 로드합니다. 사용자가 새로운 Class 를 생성할 경우 고유의 namespace 또는 Prefix 를 붙이는 것이 좋습니다.

아래와 같이 클래스가 정의된 경우 Call to undefined method Component\Print\Print::printGodomall() 오류가 발생합니다.

// 솔루션에서 정의한 MsgPrintController
namespace Controller\MsgPrint;
class MsgPrintController {
	public function index() {
    	$msgPrint = new \Component\MsgPrint\MsgPrint();
        $msgPrint->printGodomall();
    };
}

// 솔루션에서 정의한 MsgPrint 클래스와 printGodomall 함수
namespace Component\MsgPrint;
class MsgPrint {
	public function printGodomall() {
    	echo '고도몰5 솔루션';
    }
}

// 사용자가 정의한 Print 클래스와 printUser 함수
namespace Component\MsgPrint;
class MsgPrint {
	public function printUser() {
    	echo '고도몰5 사용자';
    }
}

Superglobals

PHP 에서 제공되는 Superglobals 변수는 모두 unset 되며 각 변수의 역할을 대체하는 클래스 및 함수는 아래와 같습니다.

$GLOBALS = Framework\Registry\Globals;
$_SERVER = \Request::server();
$_GET = \Request::get();
$_POST = \Request::post();
$_FILES = \Request::files();
$_REQUEST = \Request::request();
$_SESSION = \Session;
$_COOKIE = \Cookie;

Controller 의 setData() 함수

Controller 에서 $this->setData(key, value)를 이용하여 View 데이터를 넘길 때에는 key 가 중복이 될 경우 이전에 담긴 데이터를 덮어쓰게 되므로 prefix 를 붙여서 사용하는 것이 안전합니다.

URI 와 Controller

솔루션에서는 URI를 이용하여 요청을 처리할 Controller 를 찾습니다. URI 와 Controller 간의 규칙은 아래와 같습니다.

  • URI : SnakeCase

ex) gdadmin.godomall5.co.kr/order/order_list.php

  • Controller : CamelCase

ex) namespace Controller\Admin\Order; OrderListController;

Controller 와 ViewPage

솔루션에서는 사용자의 요청을 Controller 가 실행한 뒤 ViewPage 를 찾습니다. Controller 와 Skinfile 간의 규칙은 아래와 같습니다.

  • Controller : CamelCase

ex) namespace Controller\Admin\Order; OrderListController;
ex) namespace Controller\Front\Order; OrderListController;

  • Skinfile : SnakeCase

ex) /admin/order/order_list.php
ex) /data/skin/front/[skin_name]/order/order_list.html

URI_HOME, URI_SHARE 상수

View 페이지에서 링크를 지정할 시에 사용되는 상수 입니다. 링크의 용도 외에는 사용을 하지 않는 것이 좋습니다.

Request::getDomainUrl() 함수

View 페이지 외에서 도메인을 알고 싶을 때에는 Request::getDomainUrl() 을 이용합니다.

App::load() 사용 시 주의사항

싱글톤을 이용하여 최초 생성된 객체를 저장한 뒤 요청이 올때마다 저장된 객체를 반환하는 함수입니다.