Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
27a0058b
Commit
27a0058b
authored
Apr 23, 2010
by
Jonathan H. Wage
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Initial entry of StaticPHPDriver
parent
6d29f05d
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
248 additions
and
3 deletions
+248
-3
PHPDriver.php
lib/Doctrine/ORM/Mapping/Driver/PHPDriver.php
+0
-1
StaticPHPDriver.php
lib/Doctrine/ORM/Mapping/Driver/StaticPHPDriver.php
+122
-0
AbstractMappingDriverTest.php
.../Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php
+106
-0
AllTests.php
tests/Doctrine/Tests/ORM/Mapping/AllTests.php
+2
-1
PHPMappingDriverTest.php
tests/Doctrine/Tests/ORM/Mapping/PHPMappingDriverTest.php
+1
-1
StaticPHPMappingDriverTest.php
...Doctrine/Tests/ORM/Mapping/StaticPHPMappingDriverTest.php
+17
-0
No files found.
lib/Doctrine/ORM/Mapping/Driver/PHPDriver.php
View file @
27a0058b
...
...
@@ -41,7 +41,6 @@ use Doctrine\Common\Cache\ArrayCache,
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan H. Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
* @todo Rename: PHPDriver
*/
class
PHPDriver
extends
AbstractFileDriver
{
...
...
lib/Doctrine/ORM/Mapping/Driver/StaticPHPDriver.php
0 → 100644
View file @
27a0058b
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\ORM\Mapping\Driver
;
use
Doctrine\ORM\Mapping\ClassMetadataInfo
,
Doctrine\ORM\Mapping\MappingException
;
/**
* The StaticPHPDriver calls a static loadMetadata() method on your entity
* classes where you can manually populate the ClassMetadata instance.
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan H. Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
StaticPHPDriver
implements
Driver
{
private
$_paths
=
array
();
public
function
__construct
(
$paths
)
{
$this
->
addPaths
((
array
)
$paths
);
}
public
function
addPaths
(
array
$paths
)
{
$this
->
_paths
=
array_unique
(
array_merge
(
$this
->
_paths
,
$paths
));
}
/**
* {@inheritdoc}
*/
public
function
loadMetadataForClass
(
$className
,
ClassMetadataInfo
$metadata
)
{
call_user_func_array
(
array
(
$className
,
'loadMetadata'
),
array
(
$metadata
));
}
/**
* {@inheritDoc}
* @todo Same code exists in AnnotationDriver, should we re-use it somehow or not worry about it?
*/
public
function
getAllClassNames
()
{
if
(
$this
->
_classNames
!==
null
)
{
return
$this
->
_classNames
;
}
if
(
!
$this
->
_paths
)
{
throw
MappingException
::
pathRequired
();
}
$classes
=
array
();
$includedFiles
=
array
();
foreach
(
$this
->
_paths
as
$path
)
{
if
(
!
is_dir
(
$path
))
{
throw
MappingException
::
fileMappingDriversRequireConfiguredDirectoryPath
();
}
$iterator
=
new
\RecursiveIteratorIterator
(
new
\RecursiveDirectoryIterator
(
$path
),
\RecursiveIteratorIterator
::
LEAVES_ONLY
);
foreach
(
$iterator
as
$file
)
{
if
((
$fileName
=
$file
->
getBasename
(
$this
->
_fileExtension
))
==
$file
->
getBasename
())
{
continue
;
}
$sourceFile
=
realpath
(
$file
->
getPathName
());
require_once
$sourceFile
;
$includedFiles
[]
=
$sourceFile
;
}
}
$declared
=
get_declared_classes
();
foreach
(
$declared
as
$className
)
{
$rc
=
new
\ReflectionClass
(
$className
);
$sourceFile
=
$rc
->
getFileName
();
if
(
in_array
(
$sourceFile
,
$includedFiles
)
&&
!
$this
->
isTransient
(
$className
))
{
$classes
[]
=
$className
;
}
}
$this
->
_classNames
=
$classes
;
return
$classes
;
}
/**
* {@inheritdoc}
*/
public
function
isTransient
(
$className
)
{
return
method_exists
(
$className
,
'loadMetadata'
)
?
false
:
true
;
}
}
\ No newline at end of file
tests/Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php
View file @
27a0058b
...
...
@@ -3,6 +3,7 @@
namespace
Doctrine\Tests\ORM\Mapping
;
use
Doctrine\ORM\Mapping\ClassMetadata
,
Doctrine\ORM\Mapping\ClassMetadataInfo
,
Doctrine\ORM\Mapping\Driver\XmlDriver
,
Doctrine\ORM\Mapping\Driver\YamlDriver
;
...
...
@@ -264,4 +265,109 @@ class User
{
}
public
static
function
loadMetadata
(
ClassMetadataInfo
$metadata
)
{
$metadata
->
setInheritanceType
(
ClassMetadataInfo
::
INHERITANCE_TYPE_NONE
);
$metadata
->
setPrimaryTable
(
array
(
'name'
=>
'cms_users'
,
));
$metadata
->
setChangeTrackingPolicy
(
ClassMetadataInfo
::
CHANGETRACKING_DEFERRED_IMPLICIT
);
$metadata
->
addLifecycleCallback
(
'doStuffOnPrePersist'
,
'prePersist'
);
$metadata
->
addLifecycleCallback
(
'doOtherStuffOnPrePersistToo'
,
'prePersist'
);
$metadata
->
addLifecycleCallback
(
'doStuffOnPostPersist'
,
'postPersist'
);
$metadata
->
mapField
(
array
(
'id'
=>
true
,
'fieldName'
=>
'id'
,
'type'
=>
'integer'
,
'columnName'
=>
'id'
,
));
$metadata
->
mapField
(
array
(
'fieldName'
=>
'name'
,
'type'
=>
'string'
,
'length'
=>
50
,
'unique'
=>
true
,
'nullable'
=>
true
,
'columnName'
=>
'name'
,
));
$metadata
->
mapField
(
array
(
'fieldName'
=>
'email'
,
'type'
=>
'string'
,
'columnName'
=>
'user_email'
,
'columnDefinition'
=>
'CHAR(32) NOT NULL'
,
));
$metadata
->
setIdGeneratorType
(
ClassMetadataInfo
::
GENERATOR_TYPE_AUTO
);
$metadata
->
mapOneToOne
(
array
(
'fieldName'
=>
'address'
,
'targetEntity'
=>
'Doctrine\\Tests\\ORM\\Mapping\\Address'
,
'cascade'
=>
array
(
0
=>
'remove'
,
),
'mappedBy'
=>
NULL
,
'inversedBy'
=>
'user'
,
'joinColumns'
=>
array
(
0
=>
array
(
'name'
=>
'address_id'
,
'referencedColumnName'
=>
'id'
,
'onDelete'
=>
'CASCADE'
,
'onUpdate'
=>
'CASCADE'
),
),
'orphanRemoval'
=>
false
,
));
$metadata
->
mapOneToMany
(
array
(
'fieldName'
=>
'phonenumbers'
,
'targetEntity'
=>
'Doctrine\\Tests\\ORM\\Mapping\\Phonenumber'
,
'cascade'
=>
array
(
1
=>
'persist'
,
),
'mappedBy'
=>
'user'
,
'orphanRemoval'
=>
false
,
'orderBy'
=>
array
(
'number'
=>
'ASC'
,
),
));
$metadata
->
mapManyToMany
(
array
(
'fieldName'
=>
'groups'
,
'targetEntity'
=>
'Doctrine\\Tests\\ORM\\Mapping\\Group'
,
'cascade'
=>
array
(
0
=>
'remove'
,
1
=>
'persist'
,
2
=>
'refresh'
,
3
=>
'merge'
,
4
=>
'detach'
,
),
'mappedBy'
=>
NULL
,
'joinTable'
=>
array
(
'name'
=>
'cms_users_groups'
,
'joinColumns'
=>
array
(
0
=>
array
(
'name'
=>
'user_id'
,
'referencedColumnName'
=>
'id'
,
'unique'
=>
false
,
'nullable'
=>
false
,
),
),
'inverseJoinColumns'
=>
array
(
0
=>
array
(
'name'
=>
'group_id'
,
'referencedColumnName'
=>
'id'
,
'columnDefinition'
=>
'INT NULL'
,
),
),
),
'orderBy'
=>
NULL
,
));
}
}
\ No newline at end of file
tests/Doctrine/Tests/ORM/Mapping/AllTests.php
View file @
27a0058b
...
...
@@ -23,7 +23,8 @@ class AllTests
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\Mapping\XmlMappingDriverTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\Mapping\YamlMappingDriverTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\Mapping\AnnotationDriverTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\Mapping\PhpMappingDriverTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\Mapping\PHPMappingDriverTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\Mapping\StaticPHPMappingDriverTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\Mapping\ClassMetadataFactoryTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\Mapping\ClassMetadataLoadEventTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\Mapping\BasicInheritanceMappingTest'
);
...
...
tests/Doctrine/Tests/ORM/Mapping/PHPMappingDriverTest.php
View file @
27a0058b
...
...
@@ -8,7 +8,7 @@ use Doctrine\ORM\Mapping\ClassMetadata,
require_once
__DIR__
.
'/../../TestInit.php'
;
class
P
hp
MappingDriverTest
extends
AbstractMappingDriverTest
class
P
HP
MappingDriverTest
extends
AbstractMappingDriverTest
{
protected
function
_loadDriver
()
{
...
...
tests/Doctrine/Tests/ORM/Mapping/StaticPHPMappingDriverTest.php
0 → 100644
View file @
27a0058b
<?php
namespace
Doctrine\Tests\ORM\Mapping
;
use
Doctrine\ORM\Mapping\ClassMetadata
,
Doctrine\ORM\Mapping\Driver\StaticPHPDriver
,
Doctrine\ORM\Tools\Export\ClassMetadataExporter
;
require_once
__DIR__
.
'/../../TestInit.php'
;
class
StaticPHPMappingDriverTest
extends
AbstractMappingDriverTest
{
protected
function
_loadDriver
()
{
return
new
StaticPHPDriver
(
__DIR__
.
DIRECTORY_SEPARATOR
.
'php'
);
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment