2017-02-25 4 views
2

내 사용자 지정 코드에서 네임 스페이스를 사용한 후 SilverStripe로 작업하는 데 많은 문제가 있습니다. 가장 큰 문제점은 SilverStripe이 이름 공간 클래스를 저장하는 데 사용하는 명명 규칙입니다.SilverStripe 3.x에서 네임 스페이스가 권장됩니까?

Product이라는 데이터 공간과 MyStore이라는 데이터 객체는 Product\MyStore이라는 테이블을 만듭니다. 슬래시는 MySQL의 이스케이프 시퀀스이므로 명명 규칙에서 다소 어리석은 선택입니다.

이제 문제는 CLI에서 테이블의 오래된 필드를 수동으로 삭제하려고 시도하는 것이므로 이러한 테이블 이름을 이스케이프 처리하는 쿼리를 수동으로 작성할 수 없습니다.

describe Product\MyStore 
describe "Product\MyStore" 
describe 'Product\MyStore' 
describe "Product\\MyStore" 
describe 'Product\\MyStore' 
describe Product\\MyStore 

아직이 잘입니다 :

describe SiteTree 

물어해야 네임 스페이스는이 때문에 SilverStripe에 추천? 나는 3.5에서 처리되는 방식이 꽤 비생산적인 것처럼 모든 네임 스페이스를 찢어 버리는 것에 아주 가깝다.

UPDATE : 향후 검색을 위해 CLI에서이 문제를 해결하려면 테이블 이름을 백틱으로 묶어야합니다.

describe `Product\MyStore` 

사용법이 좋지 않거나 이름이 잘못 지정된 표와 같이 사용되는 이유는 arguable in the MySQL community 인 것처럼 보입니다. 사물의 명명 협약 측면에서 여전히 유효 할 수 있으므로 질문을 떠날 것입니다.

+0

SS4는 DB 테이블에 대해 동일한 명명 체계를 사용합니다. 따라서 백 슬래시가 남아있게됩니다. * 그러나 * SS4에서는 DataObject 당 사용자 정의 테이블 이름 (SS3 사용자가 사용할 수없는 옵션)을 지정할 수 있습니다. – bummzack

답변

2

짧은 답변 : 없음 (EDIT 없습니다 : 예 - 아래 참조)이 가능하지만 내가보기 엔 당신이 SilverStripe 3 네임 스페이스를 사용하는 것이 아니라 나 자신이 시도 SilverStripe 4. 대기하지 않는 것이 좋습니다 것,

을 SilverStripe 3.2와 함께 몇 개의 프로젝트에서 네임 스페이스를 사용하고 모든면에서 많은 문제를 겪었습니다. 결국 모든 작업이 가능해졌지만 노력할만한 가치가 없었습니다. 따라서 비 이름 공간 설정으로 되돌아 왔습니다.

그러나 좋은 소식이 있습니다. SilverStripe 4는 지금 알파 상태입니다. 실제로는 비교적 빨리 (몇 달) 출시 될 것입니다. 저는 실제로 SilverStripe 4를 사용하여 2 개의 프로젝트를 이미 개발 중입니다. 하나는 몇 주 후에 생방송으로 제공 될 커뮤니티 프로젝트입니다. 프로젝트가 오랜 기간 동안 개발 중에 있거나 위험을 감수하려는 경우 SilverStripe 4를 이미 사용하는 것이 좋습니다.

EDIT : 다른 사람들은 나보다 더 성공했다고 지적했습니다. 특히 3.5 이상. 그래서 나는 그것을 사용하려고 시도한 후에 네임 스페이스와의 호환성이 향상되었다고 가정해야합니다.

+0

전면 의견을 말씀해 주셔서 감사합니다. 나는 네임 스페이스가 가치가 없다는 인상을 받았다. SS4에 대한 좋은 소식을 듣고 계속 지켜봐야합니다. 불행히도 그의 프로젝트는 한 달도 채 안 남았습니다. 나는 머리를 숙이고 4를 위해 나의 코드를 준비하려고 노력해야한다. 그것이 가능하다면. – Aaryn

+1

저는 항상 3.x 프로젝트의 네임 스페이스를 지정했습니다. Zauberfisch가 말한 문제가 궁금 할 것입니다. 많은 3.x 모듈은 네임 스페이스를 사용하기 때문에 IMO는 회사에 대한 근거가 거의 없습니다.선택 사항 일 수도 있지만 아마도 "아니오"는 아닙니다. – UncleCheese

+0

또한 3.x, 모듈 및 프로젝트에서 네임 스페이스를 사용하고 있습니다. 지금까지는 아무런 문제도 없었습니다 ... 네임 스페이스를 사용할 때 작동이 멈췄는지 알고 싶습니다. – bummzack