Prefix
Namespace
ClassPath
ClassLoader
Superglobals
Controller 의 setData() 함수
URI 와 Controller
Controller 와 ViewPage
URI_HOME, URI_SHARE 상수
Request::getDomainUrl() 함수
App::load() 사용 시 주의사항
코딩시 가이드
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 '고도몰 솔루션';
}
}
// 사용자가 정의한 Print 클래스와 printUser 함수
namespace Component\MsgPrint;
class MsgPrint {
public function printUser() {
echo '고도몰 사용자';
}
}
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() 사용 시 주의사항
싱글톤을 이용하여 최초 생성된 객체를 저장한 뒤 요청이 올때마다 저장된 객체를 반환하는 함수입니다.
'고도몰 개발가이드' 카테고리의 다른 글
고도몰을 해커로부터 지키는 방법? 사고 사례와 해결 방법에 대하여 (1) | 2023.08.30 |
---|---|
NHN COMMERCE 고도몰 플랜 개발자센터 OPEN API - 주문조회 (1) | 2023.05.20 |
개발을 몰라도 고도몰에서 위젯을 이용해 개발이 가능하다!? (0) | 2023.05.19 |