library/Doctrinelibray/Symfony
autoloadernamespaces.doctrine = "Doctrine"autoloadernamespaces.symfony = "Symfony"
appnamespace = "Ecom"
pluginpaths.Ecom\Application\Resources = APPLICATION_PATH "/resources"
resources.doctrine2.connection.driver = "pdo_mysql"resources.doctrine2.connection.host = "localhost"resources.doctrine2.connection.user = "root"resources.doctrine2.connection.password = ""resources.doctrine2.connection.dbname = "doctrinedb"
<?php名前空間 Ecom \ Application \ Resources 。Doctrine \ Common \ Utilを使用してください。Ecom \ Documentを使用します。Doctrine \ ORMを使用します。Doctrine \ DBALを使用してください。Doctrine \ Commonを使用します。Doctrine \ Common \ Cacheを使用してください。Zend \ Application \ Resourceを使用します。クラス Doctrine2 は Resource \ AbstractResource {を 拡張しますパブリック 関数 init ( ) {$ front = $ this- > getBootstrap ( ) -> getResource ( 'frontcontroller' ) ;$ modules = $ front- > getControllerDirectory ( ) ;$ entityModels = array ( ) ;foreach ( $ module as $ module => $ moduleDirectory ) {$ dir = dirname ( $ moduleDirectory ) 。 「/モデル」 ;if ( is_dir ( $ dir ) ) {$ entityModels [ ] = $ dir ;}}$ options = $ this- > getOptions ( ) ;$ config = new ORM \ Configuration ( ) ;$ config- > setProxyDir ( APPLICATION_PATH 。 '/ proxies ' ) ;$ config- > setProxyNamespace ( 'Ecom \ Proxy' ) ;$ config- > setAutoGenerateProxyClasses ( $ this- > getBootstrap ( ) -> getEnvironment ( ) == "development" ) ;$ driverImpl = $ config- > newDefaultAnnotationDriver ( $ entityModels ) ;$ config- > setMetadataDriverImpl ( $ driverImpl ) ;if ( $ this- > getBootstrap ( ) -> getEnvironment ( ) == "development" ) {$ cache = new Cache \ ArrayCache ( ) ;} else {$ cache = 新しい Cache \ ApcCache ( ) ;}$ config- > setMetadataCacheImpl ( $ cache ) ;$ config- > setQueryCacheImpl ( $ cache ) ;$ evm = new Common \ EventManager ( ) ;$ entityManager = ORM \ EntityManager :: create ( $ options [ 'connection' ] 、 $ config 、 $ evm ) ;$ eventDocument = new EventDocument ( $ entityManager- > getEventManager ( ) ) ;return $ entityManager ;}}クラス EventDocument {プライベート $ evm ;public $ preFooInvoked = false ;public $ postFooInvoked = false ;パブリック 関数 __construct ( $ evm ){$ this- > evm = $ evm ;// $ evm-> addEventListener(array(ORM \ Events :: preRemove)、$ this);// $ evm-> addEventListener(array(ORM \ Events :: postRemove)、$ this);// $ evm-> addEventListener(array(ORM \ Events :: prePersist)、$ this);$ evm- > addEventListener ( array ( ORM \ Events :: postPersist 、 ORM \ Events :: postUpdate ) 、 $ this ) ;// $ evm-> addEventListener(array(ORM \ Events :: preUpdate)、$ this);// $ evm-> addEventListener(array(ORM \ Events :: postUpdate)、$ this);// $ evm-> addEventListener(array(ORM \ Events :: postLoad)、$ this);// $ evm-> addEventListener(array(ORM \ Events :: loadClassMetadata)、$ this);// $ evm-> addEventListener(array(ORM \ Events :: onFlush)、$ this);}パブリック 関数 postPersist ( Common \ EventArgs $ e ){\ Doctrine \ Common \ Util \ Debug :: dump ( $ e- > getEntity ( ) ) ;echo __METHOD__ ;}パブリック 関数 postUpdate ( Common \ EventArgs $ e ){echo __METHOD__ ;}}
<?php名前空間カタログ;Zend \ Controllerを使用します。Core \ Model \ Entityを使用します。カタログ\モデルを使用します。クラス IndexController は Controller \ Actionを拡張します{パブリック 関数 init ( ){/ *ここでアクションコントローラを初期化します* /}パブリック 関数 indexAction ( ) {$ product = new Model \ Product ( ) ;$ product- > setName ( 'test' ) ;$ product- > setSku ( ' test'。mktime ( ) ) ;/ * @var $ em Doctrine \ ORM \ EntityManager * /$ em = $ this- > getInvokeArg ( 'bootstrap' ) -> getResource ( 'doctrine2' ) ;$ em- > persist ( $ product ) ;$ em- > flush ( ) ;$ this- > _helper- > layout- > setLayout ( 'layout' ) ;}}
<?php名前空間 Catalog \ Model ;Core \ Model \ Entityを使用します。/ *** @Entity* @HasLifecycleCallbacks* @Table(name = "catalog_product")* /クラス Product は Model \ Entity {を 拡張します/ *** @var integer* @Id @Column(type = "integer")* @GeneratedValue(ストラテジー= "AUTO")* /プライベート $ id ;/ *** @var string* @Column(タイプ= "文字列"、長さ= 255)* /プライベート $名 ;/ *** @var string* @Column(type = "string"、length = 255、unique = true、nullable = false)* /プライベート $ sku ;/ *** @var string* @Column(type = "datetime"、nullable = true)* /private $ created ;/ *** @var string* @Column(type = "datetime"、nullable = true)* /プライベート $が更新されました 。/ *** @return integer $ id* /パブリック 関数 getId ( ) {$ this- > idを 返し ます。}/ *** @return string $名* /パブリック 関数 getName ( ) {return $ this- > getProperty ( 'name' ) ;}/ *** @param string $ name設定する$ name* /パブリック 関数 setName ( $ name ) {$ this- > name = $ name ;$ thisを 返し ます。}/ *** @return string作成された$* // *** @ $ skuを返す* /パブリック 関数 getSku ( ) {return $ this- > getProperty ( 'sku' ) ;}/ *** @param $ sku設定する$ sku* /パブリック 関数 setSku ( $ sku ) {$ this- > sku = $ sku ;$ thisを 返し ます。}パブリック 関数 getCreated ( ) {return $ this- > getProperty ( 'created' ) ;}/ *** @param $ created $を作成して設定* /パブリック 関数 setCreated ( $ created ) {$ this- > created = $ created ;$ thisを 返し ます。}/ *** @更新された$を返す* /パブリック 関数 getUpdated ( ) {return $ this- > getProperty ( 'updated' ) ;}/ *** @param $は$を更新し、設定するために更新されました* /パブリック 関数 setUpdated ( $ updated ) {$ this- > updated = $ updated ;$ thisを 返し ます。}}
Source: https://habr.com/ru/post/J99061/More articles:特定のネットワークに接続したときにN900のsmbフォルダーを自動的にマウントする「LibCanvas」-Javascript Canvasを操作するためのフレームワーク、パート3Windows Phone 7の開始時の国と言語村のメモ便利なjQuery機能ProLiant DL G7サーバーの省エネおよび冷却システム:統合の成長への対応プレイヤーArchos 3 Visionの概要Opera Mini 5.1 for Android民営化の別の波が来ています(以前と同様、Chubaisの名前に関連付けられています):OJSCはNanotech State Corporationから作成されますJavascript用のシンプルなRubyスタイルの継承All Articles