thinkphp 코드 재사용 문제
代言
代言 2017-07-01 09:11:50
0
1
1011

개발에 ThinkPhp3.2를 사용하는 이유는 코드 재사용을 늘리기 위해 추가, 삭제, 수정 및 검색 작업을 여러 번 사용해야 하기 때문입니다. 코드의 추가, 삭제, 수정 및 조회를 수행하기 위해 curdControler와 curdModel을 공통으로 작성했습니다. 추가, 삭제, 수정 및 조회를 사용해야 할 경우 curdController와 curdModel을 직접 상속합니다.

이제 문제가 있습니다. 일반적으로 커드 작업에는 허가 판단이 필요합니다. 그렇지 않으면 매우 위험합니다. 여기서 내 생각은 다양한 기능과 권한 제어 메서드 때문에 curdController 생성 메서드에서 checkAuth()를 호출하는 것입니다. 어떻게 curdController를 상속하는 하위 클래스가 checkAuth 메서드를 오버로드하도록 할 수 있나요?

권한 판단 기능을 추상적인 방법으로 정의하는 것이 제 생각입니다

으아악

curdController 클래스는 추상 클래스로 정의되어 있지만 추상 클래스를 인스턴스화할 수 없으면 생성자의 코드가 유효하지 않게 됩니다. 이 구현에 어떤 문제가 있나요?

두 번째 질문, TP 코드를 재사용할 때 더 좋은 아이디어가 있나요? 제 접근 방식의 숨겨진 위험과 문제점은 무엇인가요? 조언해 주셔서 감사합니다. 으아악
代言
代言

모든 응답(1)
typecho

코드 재사용을 위해 PHP 기능을 사용하는 것이 좋습니다:
http://php.net/manual/zh/lang...
또는 클로저 바인딩 사용(권장하지 않음):
http://php.net /manual/en /클로스...

checkAuth可以通过不同的业务,书写不同的traits,在具体继承curdController的类中使用对应的traits,由于checkAuth()只返回校验结果的真假,所以这个可以向任意的Controller中定制checkAuth().

첫 번째 질문에 대한 답변으로, 추상 클래스를 상속하고 있으므로curdController的子类构造函数里,手动调用了parent::__construct(); 하위 클래스가 인스턴스화되는 한 상위 클래스의 생성자도 사용할 수 있습니다. 아래 예를 참조하세요.
코드:

으아악

결과:

두 번째 질문에 대한 응답으로 저는 개인적으로 전체 구조적 프레임워크가 다소 거칠다고 생각합니다. 일반적인 일대다 및 다대다 관계는 여전히 수동으로 수행해야 하며 이 연결 작업을 캡슐화하는 것이 좋습니다.

제가 개인적으로 더 많이 사용하는 프레임워크는 CodeIgniter,但是我觉得MVC(HMVC)模型基本思路都是一致的,所以下面谈下我个人在CodeIgniter에서 만든 재사용 패키지이지만:

저는 개인적으로 데이터 테이블의 원자적 연산을 맨 아래 레이어에 배치했습니다. Model上面(是基于CI-Base-Model改的,你可以看一下CI-Base-Model里的has_manybelongs_to配置),另外我继承了CI-Base-Model自己写了一个CRUD_Model,这个CRUD_Model 거의 일부 구성 항목과 일부 재작성을 사용하여 표준 CRUD 배열을 빠르게 생성할 수 있습니다.

으아악

내 모델의 아이디어가 CRUD 로직을 개선하는 데 도움이 되기를 바랍니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!