ミクロン。 PHP ORM

単純なことは単純であるべきであり、複雑なことは可能であるべきです)

(ラリーウォール)



リポジトリから配信パッケージをダウンロードできます: bitbucket.org/sciner/mikron-php-orm

インストール手順は少し低いか、パス/mikron/admin/help/install.txtに沿って配布パッケージから取得できます。



それは何であり、何が許可されます:



これらの線は、Mikronで定められたコンセプトを完全に特徴づけています。 半年前、私は自分のphp-ormシステムの開発を始めました。 現時点では、多くのことに気づきました。製品を一般に公開する時が来たと思います。



Mikronでは、複数のサイトを同時に設計および管理できます。 当然、サイトごとに個別のフォルダー、データベースなどが割り当てられます。



どこから始まりますか:



サイトの設計は、スキームのファイル内のエンティティの説明から始まります。 エンティティはXMLファイルに記述されています。 システムは、このようなファイルを無制限に保持できます。 動的負荷の可能性があります。
$mikron -> Schema -> Add ( $file , $schema_name ) ;



。 その結果、すべてのエンティティが一度にコンパイルされます。 データベースとクラスのマッピングが作成されます。 すべてのクラスは、メインメソッドが実装されるベースから継承されます。 各エンティティには、さまざまなタイプのフィールドのセットがあります。

ネイティブフィールドタイプORM、画像、パスワードがあります...

フィールドタイプとして、エンティティは別のエンティティ(親)、またはエンティティのコレクション(子リスト)を持つことができます。

また、フィールドタイプは、説明されている「ENUM」ディレクトリにすることもできます。



構成:



スキーマファイルはUTF-8でエンコードされたXMLファイルです。 スキーマファイルには、ディレクトリとエンティティが記述されています。



エンティティ「メッセージ」の説明の例:

< entity name ="T_MESSAGE" description ="" inmenu ="/" displayname ="{{USER}}" >

< field name ="contacts" type ="varchar(64)" description ="E-mail" validator ="required: true" />

< field name ="user" type ="T_USER" description ="" hidden ="1" default ="mikron:user()" />

< field name ="state" type ="STATES" description ="" hidden ="1" default ="1" />

< field name ="dt" type ="datetime" description ="" hidden ="1" default ="now()" />

</ entity ></ code >









< entity name ="T_MESSAGE" description ="" inmenu ="/" displayname ="{{USER}}" >

< field name ="contacts" type ="varchar(64)" description ="E-mail" validator ="required: true" />

< field name ="user" type ="T_USER" description ="" hidden ="1" default ="mikron:user()" />

< field name ="state" type ="STATES" description ="" hidden ="1" default ="1" />

< field name ="dt" type ="datetime" description ="" hidden ="1" default ="now()" />

</ entity ></ code >










ディレクトリの説明の例:
< code > < enum name ="STATES" description ="" >

< element name ="active" value ="1" description ="" />

< element name ="hidden" value ="2" description ="" />

< element name ="deleted" value ="3" description ="" hidden ="1" />

< element name ="closed" value ="4" description ="" hidden ="1" />

</ enum >










ここで、要素要素の非表示属性は、編集フォーム上のリスト内の要素の可視性を意味します。

主な機能:



Mikronには多数の組み込みモジュールがあり、必要に応じて次のようにロードされます。
$mikron -> Modules -> LoadModule ( 'slidewindow' ) ;



。 システムには、Smartyと互換性のある独自の実行可能命令エンジンもあります。



いつでも、サイト全体のバックアップを作成したり、バックアップからサイトを復元したりすることができます[システム]→[エクスポート、インポート]のメニュー項目が用意されています



システムは形態学的検索をサポートしています。 このように呼び出されます:

$mikron -> EntityManager -> search ( " " ) ;





検索をサポートするすべてのタイプの初期化されたエンティティを持つ配列が返されます。

データベースの抽象化:



特定のタイプのエンティティの配列を取得する:
$res = $mikron -> Queries -> Query ( "T_USER" , [ aId = null ] , [ Criteria / Criterion ] ,) ;





特定のタイプのエンティティの1つのインスタンスの選択:
$ < code > user = $mikron -> Queries -> QueryOne ( "T_USER" ) ;



エンティティをロードできなかった場合、関数はnullを返します。

基準を作成する例:

$cr = new Criteria ( ) ; <br/>

$cr -> Add ( new Criterion ( 'user' , $user -> id ) ) ; <br/>

$cr -> Add ( new Criterion ( 'message/recipient' , $user -> id ) ) ; <br/>

$links = $mikron -> Queries -> Query ( 'MESSAGE_LINK' , null , $cr ) ;






ページネーションのサポート:

$cr = new Criteria ( ) ; <br/>

$cr -> Add ( new Criterion ( 'user' , $user -> id ) ) ; <br/>

$paginator = new MikronPaginator ( 'meslinks' , 10 ) ; <br/>

$links = $mikron -> Queries -> Query ( 'MESSAGE_LINK' , null , $cr , null , $paginator ) ; <br/>

$mikron -> EntityManager -> ShowList ( $links ) ; <br/>

$paginator -> Draw ( ) ;






エンティティの操作:



新しいエンティティインスタンスの作成:

$user = new T_USER ( ) ;





IDを知っているDBからエンティティを読み取る:

$user = new T_USER ( $id ) ;





エンティティインスタンスを作成または編集するための自動フォームの呼び出し:

$mikron -> EntityManager -> ShowForm ( new T_USER ( ) ) ;





任意のテンプレートを使用してエンティティを派生させる:

echo $user -> toStringEx ( ' {name}<br />: {country/name}<br />ID : {country->value}' ) ;





これは、テンプレート内で親の値の出力が属性へのパスを示すことでサポートされていることを示しています。 たとえば、ここ{country / name}は国の名前を表示し、オブジェクトの識別子{country-> value}を表示します。

エンティティの作成、保存、読み取りの例:

$user = new T_USER ( ) ; <br/>

$user -> login -> value = "SCINER" ; <br/>

$user -> password -> value = "123" ; <br/>

$user -> contacts -> value = "sciner@yandex.ru" ; <br/>

$user -> Save ( ) ; <br/>

$addeduser = new T_USER ( $user -> id ) ;






エンティティ属性を読み取るための簡単な方法:

// <br/>

$mes = new MESSAGE_LINK ( 3 ) ; <br/>

// <br/>

echo $mes -> message -> value -> recipient -> value -> country -> value -> name -> value ; <br/>

// <br/>

echo $mes -> getValue ( 'message/recipient/country/name' ) ;






アクセスとセキュリティ:



システムは、エンティティT_ROLEとして実装されるロールなどの概念を使用してアクセス制御を編成します。 次の方法を使用して、ロールの現在のユーザーを確認できます。

$mikron -> Users -> CurrentUser ( ) -> hasRole ( 'patient' ) ;





アクセス制御は、[システム] \ [アクセス]メニューの管理者モジュールで実行されます。

PSすぐにすべてを説明することはしません。 しかし、登録後、私はすべてをここに表示して伝え、すべての質問に答えることを計画しています。 Mikronを集合的な精神で開発したいのです。 よろしくお願いします



All Articles