문제

각각에 대해 공통 기능을 작성하는 간단한 방법이 있습니까? CRUD (create, retreive, update, delete) 작업 PHP 프레임 워크를 사용하지 않고. 예를 들어 테이블 이름과 필드 이름을 매개 변수로 가져와 데이터를 mySQL database. 또 다른 요구 사항은 기능이 조인 IE를 지원할 수 있어야한다는 것입니다. 즉, 필요한 경우 여러 테이블에 데이터를 삽입 할 수 있어야합니다.

이러한 작업은 프레임 워크를 사용하여 수행 할 수 있지만 여러 가지 이유 때문에 여기에 설명하기에는 너무 길기 때문에 사용할 수 없습니다.

도움이 되었습니까?

해결책

나는 이것을 바로 썼다. 그것은 일종의 세련된 발판이다. 기본적으로 생성자가 테이블을 사용하도록하는 클래스, 필드 이름 및 유형이 포함 된 배열 및 동작입니다. 이 조치를 바탕으로 객체는 그 자체로 메소드를 호출합니다. 예를 들어:

이것은 내가 전달하는 배열입니다.

$data = array(array('name' => 'id', 'type' => 'hidden')
          , array('name' => 'student', 'type' => 'text', 'title' => 'Student'));

그런 다음 생성자를 호출합니다.

new MyScaffold($table, 'edit', $data, $_GET['id']);

위의 경우 생성자는 '편집'메소드를 호출하여 $ 테이블에서 데이터를 표시하는 양식을 표시하지만 배열에 설정 한 필드 만 호출합니다. 그것이 사용하는 레코드는 $ _get 메소드에 의해 결정됩니다. 이 예에서 '학생'필드는 텍스트 상자 (따라서 '텍스트'유형)로 표시됩니다. '제목'은 단순히 사용 된 레이블입니다. '숨겨진'인 경우 ID 필드는 편집을 위해 표시되지 않지만 사용하기 위해 프로그램에 사용할 수 있습니다.

'편집'대신 '삭제'를 통과 한 경우 get 변수에서 레코드가 삭제됩니다. 테이블 이름 만 전달하면 편집, 삭제 및 새로 용 버튼이있는 레코드 목록으로 기본값이됩니다.

그것은 많은 커스터마이즈 가능성을 가진 모든 crud를 포함하는 하나의 클래스 일뿐입니다. 원하는만큼 복잡하거나 단순하게 만들 수 있습니다. 일반적인 클래스로 만들면 모든 프로젝트에 삭제하고 지침, 테이블 정보 및 구성 정보를 통과 할 수 있습니다. 하나의 테이블에 대해 스캐 폴드를 통해 새 레코드가 추가되는 것을 허용하지 않을 수도 있습니다.이 경우 매개 변수 배열에서 "Newbutton"이 거짓으로 설정 될 수 있습니다.

그것은 기존의 의미에서 프레임 워크가 아닙니다. 내부적으로 모든 것을 처리하는 독립형 클래스. 이것에 대한 몇 가지 단점이 있습니다. 핵심 테이블은 내 모든 테이블에 'ID'라는 기본 키가 있어야한다는 것입니다. 또 다른 하나는 관리 할 각 테이블에 대한 정보를 자세히 설명하는 큰 배열을 준비해야하지만 한 번만 수행하면됩니다.

이 아이디어에 대한 튜토리얼은 참조하십시오 여기

다른 팁

그러한 기능을 작성하려고하면 곧 또 다른 프레임 워크를 실현했다는 것을 알게 될 것입니다.

물론 그렇지 않으면 그러한 프레임 워크가 존재하고 CRUD 시설을 구현하는 이유입니다. 먼저 기존의 프레임 워크를 실제로 사용하는 데 필요한 사람을 확신 시키려고 노력하고 두 번째는 위의 실패로, 그중 하나 또는 두 개를 살펴보고 구현 아이디어를 복사 할 것입니다. 당신이 볼 수있는 모든 것을 실패합니다 http://www.phpobjectgenerator.com/

프레임 워크가 없으면 ORM없이 포함됩니까? 그렇지 않으면 나는 살펴볼 것을 제안 할 것이다 교의 또는 추진.

나는 당신이 느끼는 방식을 알고 있습니다.

Pork.dbobject는 객체를 확장 할 수있는 간단한 클래스입니다. 작업하려면 DB 연결 클래스 만 있으면됩니다.

확인하십시오 :www.schizofreend.nl/pork.dbobject/

(예, yuk @ php 객체 생성기. 부풀어 오른 경고! 모든 수업에서 사용자 지정 기능을 원하는 사람은 누구입니까 ???)

나는 당신이 시간 동안 스트레스를받지 않는 한 CRUD를 달성하는 자신의 기능을 작성해야한다고 생각합니다. 그것은 그 자체로 프레임 워크 일지 모르지만 프레임 워크를 비명을 지르기 전에 프레임 워크가하는 일을 배워야합니다 .... 프레임 워크에서 버그를 쉽게 픽업하고 그들을 고칠 수 있기 때문에 이러한 것들을 아는 것이 편리 해집니다 .... .... ....

나는이 질문을 잠시 뒤로 왔고 그 당시에는 가벼운 방식으로 이것을 한 것을 찾지 못했습니다.

나는 내 자신의 글을 썼고 최근에 다른 사람들이 유용 할 수있는 경우 오픈 소싱 (MIT 라이센스)을 시작했습니다. 그것은 github에 있습니다. 자유롭게 확인하고 필요에 맞는 경우 사용하십시오!

https://github.com/arthurd/php-crud-model-class

바라건대 그것은 약간의 용도를 찾을 수 있기를 바랍니다 - 약간의 개선 / 기부금을보고 싶어서 풀 요청을 제출하십시오! :-)

가능하지만 권장하지 않을 것입니다.

프레임 워크를 사용하는 방법이 없으면 다른 모든 모델 객체가 확장되는 기본 클래스를 만들 수 있습니다. 그런 다음 기본 클래스가 get_class() 그리고 get_class_vars().

가능합니까? 예.
추천할까요? 아니요

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top