[DCOM-33] Allow to register callbacks in the EventManager Created: 01/Jan/11 Updated: 01/Jan/11 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | Event System |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | New Feature | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Comments |
| Comment by Benjamin Eberlei [ 01/Jan/11 ] |
|
Consider to add a second queue for callbacks. Its not possible to simulate this by doing something like: public function addCallbackListener($event, Closure $callback) { $eventListener = new stdClass(); $eventListener->$event = $callback; $this->addEventListener($event, $eventListener); } sad |
[DCOM-74] Ideas for Event Manager Improvements Created: 31/Oct/11 Updated: 06/Feb/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Major |
| Reporter: | Johannes Schmitt | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
I have two ideas for improving the event manager. 1. Add a lazy-loading implementation as we discussed on IRC already (helpful for keeping the overhead of post generation schema listener down for example) |
| Comments |
| Comment by Guilherme Blanco [ 16/Jan/12 ] |
|
I'm still a huge fan of DOM2 Events. I even have the code somewhere here, but that would break BC. |
| Comment by Marijn Huizendveld [ 06/Feb/13 ] |
|
Would you care to elaborate on your DOM2 Events implementation Guilherme? |
[DCOM-67] Introduce immutable DateTime with __toString() Created: 27/Aug/11 Updated: 29/Jan/12 |
|
| Status: | Reopened |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.3 |
| Type: | Improvement | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Comments |
| Comment by Benjamin Eberlei [ 27/Aug/11 ] |
|
Implemented |
| Comment by Koji Ando [ 11/Jan/12 ] |
|
Though it is implemented once on https://github.com/doctrine/common/commit/7140ad3ba0ba2a94238976dd7f310ff92b478c96, I think this issue must be reopened. |
| Comment by Benjamin Eberlei [ 11/Jan/12 ] |
|
Code was removed due to implementation problems. |
[DCOM-131] [GH-210] MappingDriverChain::getAllClassNames should load all classes from the defaultDriver Created: 27/Oct/12 Updated: 27/Oct/12 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of rnijveld: Url: https://github.com/doctrine/common/pull/210 Message: I actually tried working around this by adding a driver using an empty string as the namespace, only to find out that `strpos()` doesn't accept an empty delimiter. Anyway, this makes sure that all loadable classes for the defaultDriver are actually returned by MappingDriverChain as well. |
[DCOM-123] [GH-202] Add sqlite cache driver Created: 08/Oct/12 Updated: 08/Oct/12 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of Baachi: Url: https://github.com/doctrine/common/pull/202 Message: |
[DCOM-121] [GH-198] [DCOM-118] fix for issue #195 Created: 03/Oct/12 Updated: 03/Oct/12 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of pscheit: Url: https://github.com/doctrine/common/pull/198 Message: I'm sorry, i have no idea why i got here now 23 commits .. i tried but no success. |
[DCOM-118] [GH-195] Add failing test to demonstrate parse error when @ is present in the description Created: 02/Oct/12 Updated: 03/Oct/12 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of Seldaek: Url: https://github.com/doctrine/common/pull/195 Message: If someone can take this and fix the issue it'd be great. I couldn't figure it out at a quick glance and I don't really have time, but it's a pretty messed up bug and not so trivial to debug if you don't know what happens in the background so I'd say it's pretty important. |
| Comments |
| Comment by Philipp Scheit [ 02/Oct/12 ] |
|
I digged a little deeper. The test case is a great one
o@example.com"
* }
*
* @AnnotationTargetPropertyMethod("Bar")
So that the catchable pattern: ("(?:[^"]|"")*") matches here to greedy (it matches string in quotes):
"
* }
*
* @AnnotationTargetPropertyMethod("
As a result the lexer does not catch the correct @ from the Annotation I could not think of a fast fix for this. But maybe tomorrow. Its not a workaround to do more or less cutting in the parser, because not-well-formed quoted strings would break anyway |
| Comment by Philipp Scheit [ 03/Oct/12 ] |
|
can someone think of a case, where a string (in some annotation) has a newline in it? Otherwise the tests do not fail, when I leave the string matching pattern with a newline.
but the second is not solvable with the lexer itself and would transfer the quoted string matching to the parser, because it needs context. I'll let seldaek pull, what I have (is this the right way?) |
[DCOM-104] Dump() has side-effects or is unreliable Created: 02/Aug/12 Updated: 11/Jan/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | 2.2.2 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Tom Vogt | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
Debian Squeeze, MySQL 5 |
||
| Description |
|
after setting a one-to-one bi-directional relationship, I am hunting a bug and trying this: \Doctrine\Common\Util\Debug::Dump($this->lord, 1); The first Dump() shows $this->lord as being NULL. |
| Comments |
| Comment by Tom Vogt [ 02/Aug/12 ] |
|
More analysis found the issue being caused by an overloaded setLord() method: public function setLord($NewLord) { return $this; without the marked line, everything works as expected, but of course the inverse side doesn't get updated without it. |
| Comment by Tom Vogt [ 02/Aug/12 ] |
|
it ate the newlines in the comment above. The problematic line is: $this->lord->setFief(null); i.e. the update of the inverse side. |
| Comment by Christophe Coevoet [ 07/Aug/12 ] |
|
I confirm that the dump command has some side effects. It initializes the persistent collections too |
| Comment by Tom Vogt [ 11/Jan/13 ] |
|
Could this for the time being be fixed with a notice in the documentation warning of possible side-effects of Dump() ? |
[DCOM-92] CouchDB, MongoDB caches Created: 25/Dec/11 Updated: 25/Dec/11 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | New Feature | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
Very simple persisntent caches for query/view results now that result cache is actually useful |
[DCOM-80] Add common exceptions into Doctrine\Common Created: 19/Nov/11 Updated: 20/Dec/11 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.3 |
| Type: | Improvement | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
Following the ZF and SF2 Standard for Exceptions we should have base exceptions in Common |
[DCOM-77] add a method to force removal of any unmapped data on flush for a given object Created: 16/Nov/11 Updated: 16/Nov/11 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | New Feature | Priority: | Major |
| Reporter: | Lukas Kahwe | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
in order to ensure that any unmapped fields are set to their defaults or removed in the case of nosql right now there is no way to do this except with 2 flush calls: aka remove+flush, persist+flush there should be some way to do this in one flush |
[DCOM-102] Updates for Fedora packaging Created: 07/Jul/12 Updated: 24/Nov/12 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | 2.3 |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Major |
| Reporter: | Shawn Iwinski | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
PEAR, Fedora, RHEL |
||
| Description |
|
I am packaging the DoctrineDBAL PEAR package for Fedora and would like to have the following updates:
|
[DCOM-164] @type phpdoc annotations are not ignored (@type == @var) Created: 22/Jan/13 Updated: 22/Jan/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | Annotations |
| Affects Version/s: | 2.3 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Matthieu Napoli | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
phpDocumentor guys wrote their own PSR to define how to use phpdoc properly (https://github.com/phpDocumentor/phpDocumentor2/blob/develop/docs/PSR.md). They deprecate the @var annotation and recommend using @type instead. The @type (phpdoc) annotation is not blacklisted/ignored by the AnnotationReader. Code that uses this annotation raises errors with Doctrine/Annotations. @type should be blacklisted/ignored, but may that create BC breaks for users? |
| Comments |
| Comment by Matthieu Napoli [ 22/Jan/13 ] |
[DCOM-163] [GH-245] Documentation fixes Created: 20/Jan/13 Updated: 20/Jan/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of BenMorel: Url: https://github.com/doctrine/common/pull/245 Message: Documentation fixes, continuing the work done on [ORM](https://github.com/doctrine/doctrine2/pull/528) and [DBAL](https://github.com/doctrine/dbal/pull/243).
|
[DCOM-162] [GH-244] return parameter for debug method Created: 14/Jan/13 Updated: 14/Jan/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of sethunath: Url: https://github.com/doctrine/common/pull/244 Message: Added $return as 4th parameter to specify whether to return the debug text or print it. It works similar to print_r function |
[DCOM-161] [GH-243] Update composer.json Created: 11/Jan/13 Updated: 11/Jan/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of stloyd: Url: https://github.com/doctrine/common/pull/243 Message: Add `provide` part as `doctrine/common` >=2.2,<2.4 has cache in it. |
[DCOM-160] [GH-242] adds a simple manager registry Created: 10/Jan/13 Updated: 10/Jan/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of schmittjoh: Url: https://github.com/doctrine/common/pull/242 Message: This registry adds some sane defaults and just requires a simple callable to be fully functional. |
[DCOM-151] [GH-233] [DocParser] Fix trying include classes if its must be ignored. Created: 10/Dec/12 Updated: 10/Dec/12 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of Stroitel: Url: https://github.com/doctrine/common/pull/233 Message: I recreate pull request (add test). Without fix test is failure. |
[DCOM-138] [GH-219] BC breaking constant name fix Created: 16/Nov/12 Updated: 16/Nov/12 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of jakoch: Url: https://github.com/doctrine/common/pull/219 Message: fixed typo on constant name (STATS_MEMORY_AVAILIABLE => STATS_MEMORY_AVAILABLE) |
[DCOM-184] [GH-266] Add a new method to use a filter before extracting the metadata Created: 12/Mar/13 Updated: 12/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of nicolasTheodo: Url: https://github.com/doctrine/common/pull/266 Message: Hi I have notice that, when you use the doctrine:mapping:convert and doctrine:mapping:import command in symfony, the filter is added after all the metadata are extracting from the database. I have also made a pull-request into the doctrineBundle and doctrine2 to fix this issue. What are your thought about my issue? |
[DCOM-185] DQL errors when attempting to use GROUP BY MAX(field) Created: 26/Mar/13 Updated: 26/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | 2.3 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Jon Langevin | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | dql, groupby, max | ||
| Description |
|
Attempting to run DQL similar to: Throws error: Per docs, MAX is allowed within GROUP BY: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#aggregate-functions If this error is due to some omission on my part, then perhaps the docs should be extended to show a valid GROUP BY MAX() usage, or the error message expanded for a better hint. |
[DCOM-186] [GH-269] ProxyGenerator eval() proxy code when $autoGenerate is true Created: 28/Mar/13 Updated: 28/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of mnapoli: Url: https://github.com/doctrine/common/pull/269 Message: ProxyGenerator eval() proxy code instead of writing it to disk when $autoGenerate is true. Related to DDC-2210(http://www.doctrine-project.org/jira/browse/DDC-2210) The idea of eval() the proxy code was suggested by @ocramius in response to the fact that in dev environment, concurrent file writes create errors. This would also simplify the setup for a dev environment: no more proxy directory to create and make writeable. |
[DCOM-187] [GH-270] Allow empty arrays in annotations Created: 29/Mar/13 Updated: 29/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of kitsunet: Url: https://github.com/doctrine/common/pull/270 Message: an empty array so far is impossible as it either results in a parse error if you just do the obvious {} or if you try {""}it will create an empty entry which in turn will cause errors depending on the annotation. |
[DCOM-152] [GH-234] Criteria filtering doesn't work with DateTime instance Created: 17/Dec/12 Updated: 30/Apr/13 |
|
| Status: | Awaiting Feedback |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of ludekstepan: Url: https://github.com/doctrine/common/pull/234 Message: Filtering associations doesn't work with DateTime instance as a comparison value because filtering uses === operator. It works with SQL backed filtering, but not on PHP collection level. ```php |
[DCOM-190] [GH-273] Added visibility in the methods Interfaces Created: 06/May/13 Updated: 06/May/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of ramonornela: Url: https://github.com/doctrine/common/pull/273 Message: This adjustment aims to bring to the default PSR2. Thanks, |
[DCOM-75] remove leading backslash from class name before comparing to namespace in annotation autoloading Created: 03/Nov/11 Updated: 03/Nov/11 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | Annotations |
| Affects Version/s: | 2.1.2 |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Guillaume ORIOL | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
not relevant |
||
| Description |
|
I am figuring a problem with Symfony Validator constraints (I use annotations to define the constraint rules). As I don't use Symfony's framework, I create the validator service by myself.
AnnotationRegistry::registerAutoloadNamespaces(array(
'\Symfony\Component\Validator\Constraints' => APPLICATION_ROOT . '/library'
));
Then, in my entities, I have annotations such as: use Symfony\Component\Validator\Constraints as Assert;
class Author {
/**
* @Assert\NotBlank()
*/
protected $name;
}
In this configuration, I get the following error:
I was able to trace it down to the Doctrine\Common\Annotations\AnnotationRegistry#loadAnnotationClass($class) where we can find the following test: if (strpos($class, $namespace) === 0) {
require ...;
}
which means "if the namespace can be found at the beginning of the FQCN, require it". Christophe Coevoet answered:
Benjamin Eberlei suggested to remove the leading backslash before comparing the class to the namespace. When I add a use statement to my code for a class, I can then use its alias to get an instance of that class. use Doctrine\ORM\Mapping\ClassMetadata;
...
$metadata = new ClassMetadata();
The same is true with: use Doctrine\ORM\Mapping as Foo;
...
$metadata = new Foo\ClassMetadata();
This is not a fully qualified class name. But I find the syntax of a fully-qualified annotation (@My\Annotation\Whatever) erroneous (or at least counter-intuitive) as it doesn't start with a backslash. |
[DCOM-128] RedisCache uses IGBINARY which is not always available Created: 20/Oct/12 Updated: 20/Oct/12 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | Caching |
| Affects Version/s: | 2.3 |
| Fix Version/s: | None |
| Type: | New Feature | Priority: | Minor |
| Reporter: | Sander Marechal | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
The RedisCache uses Redis::SERIALIZER_IGBINARY. See https://github.com/doctrine/common/blob/master/lib/Doctrine/Common/Cache/RedisCache.php line 47. The problem is that the php Redis extension can be compiled without IGBINARY support. In that case, this code causes a fatal error because the constant does not exist. The DotDeb package of php5-redis (often used on Debian systems) for example comes compiled without IGBINARY support. The code should probably check if the constant exists. If not, the default to Redis::SERIALIZER_PHP |
[DCOM-129] Annotation parser matches colon after annotation Created: 21/Oct/12 Updated: 21/Oct/12 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | 2.3 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Minor |
| Reporter: | Konstantin | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
Code /** * Removes given $node from the tree and reparents its descendants * * @todo may be improved, to issue single query on reparenting * @param object $node * @throws RuntimeException - if something fails in transaction * @return void */ public function removeFromTree($node) { fails with `[Semantical Error] The annotation "@todo:" in method Gedmo\Tree\Entity\Repository\ClosureTreeRepository::removeFromTree() was never imported. Did you maybe forget to add a "use" statement for this annotation?`. As you see it tryes find annotation with name "@todo:". Don't know, maybe rtrim($name, ':') would enough. |
[DCOM-168] ignoredAnnotationNames doesn't work in Annotation loop Created: 27/Jan/13 Updated: 27/Jan/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | Annotations |
| Affects Version/s: | 2.3 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Minor |
| Reporter: | James S | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
Mac OSX 10.6.8 |
||
| Description |
|
I'm just starting out with Doctrine, so my setup is a bit messy, but hopefully someone can figure out what is relevant from all my code. Basically, I'm using Annotations on Doctrine ORM, and am integrating with Gedmo for several of their extensions. I can run the CLI tool and update the schema, but when running via my web server, I'm getting the following error: object(Doctrine\Common\Annotations\AnnotationException)[150] protected 'message' => string '[Semantical Error] The annotation "@Entity" in class Innertube\Models\Device was never imported. Did you maybe forget to add a "use" statement for this annotation?' (length=163) private 'string' (Exception) => string '' (length=0) protected 'code' => int 0 protected 'file' => string '/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Annotations/AnnotationException.php' (length=211) protected 'line' => int 52 private 'trace' (Exception) => array 0 => array 'file' => string '/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Annotations/DocParser.php' (length=201) 'line' => int 592 'function' => string 'semanticalError' (length=15) 'class' => string 'Doctrine\Common\Annotations\AnnotationException' (length=47) 'type' => string '::' (length=2) 'args' => array ... 1 => array 'file' => string '/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Annotations/DocParser.php' (length=201) 'line' => int 533 'function' => string 'Annotation' (length=10) 'class' => string 'Doctrine\Common\Annotations\DocParser' (length=37) 'type' => string '->' (length=2) 'args' => array ... 2 => array 'file' => string '/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Annotations/DocParser.php' (length=201) 'line' => int 297 'function' => string 'Annotations' (length=11) 'class' => string 'Doctrine\Common\Annotations\DocParser' (length=37) 'type' => string '->' (length=2) 'args' => array ... 3 => array 'file' => string '/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Annotations/AnnotationReader.php' (length=208) 'line' => int 151 'function' => string 'parse' (length=5) 'class' => string 'Doctrine\Common\Annotations\DocParser' (length=37) 'type' => string '->' (length=2) 'args' => array ... 4 => array 'file' => string '/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Annotations/CachedReader.php' (length=204) 'line' => int 86 'function' => string 'getClassAnnotations' (length=19) 'class' => string 'Doctrine\Common\Annotations\AnnotationReader' (length=44) 'type' => string '->' (length=2) 'args' => array ... 5 => array 'file' => string '/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php' (length=205) 'line' => int 61 'function' => string 'getClassAnnotations' (length=19) 'class' => string 'Doctrine\Common\Annotations\CachedReader' (length=40) 'type' => string '->' (length=2) 'args' => array ... 6 => array 'file' => string '/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php' (length=202) 'line' => int 112 'function' => string 'loadMetadataForClass' (length=20) 'class' => string 'Doctrine\ORM\Mapping\Driver\AnnotationDriver' (length=44) 'type' => string '->' (length=2) 'args' => array ... 7 => array 'file' => string '/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php' (length=228) 'line' => int 302 'function' => string 'doLoadMetadata' (length=14) 'class' => string 'Doctrine\ORM\Mapping\ClassMetadataFactory' (length=41) 'type' => string '->' (length=2) 'args' => array ... 8 => array 'file' => string '/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php' (length=228) 'line' => int 205 'function' => string 'loadMetadata' (length=12) 'class' => string 'Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory' (length=64) 'type' => string '->' (length=2) 'args' => array ... 9 => array 'file' => string '/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/orm/lib/Doctrine/ORM/EntityManager.php' (length=187) 'line' => int 268 'function' => string 'getMetadataFor' (length=14) 'class' => string 'Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory' (length=64) 'type' => string '->' (length=2) 'args' => array ... 10 => array 'file' => string '/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/orm/lib/Doctrine/ORM/EntityManager.php' (length=187) 'line' => int 682 'function' => string 'getClassMetadata' (length=16) 'class' => string 'Doctrine\ORM\EntityManager' (length=26) 'type' => string '->' (length=2) 'args' => array ... 11 => array 'file' => string '/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/api/routes/devices.php' (length=108) 'line' => int 16 'function' => string 'getRepository' (length=13) 'class' => string 'Doctrine\ORM\EntityManager' (length=26) The call that initiates this is getRepository(), which IS NOT in the CLI. I've tracked it down to the fact that DocParser is not getting the list of names to ignore. Oddly, it gets it the first time that it's called by AnnotationReader. However, DocParser->parse() calls $this->Annotations(), which calls $this->Annotation(), calls $this->collectAnnotationMetadata(), which then creates a new parser self::$metadataParser = new self();
and eventually parses it self::$metadataParser->parse() , but DOES NOT pass its ignorednames. This seems like an oversight, but it clearly works for a lot of people. My configuration code is:
if (self::$isDevMode) {
$cache = new \Doctrine\Common\Cache\ArrayCache;
} else {
$cache = new \Doctrine\Common\Cache\ApcCache;
}
\Doctrine\Common\Annotations\AnnotationReader::addGlobalIgnoredName('package');
AnnotationRegistry::registerFile(__DIR__ . "/vendor-composer/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php");
\Gedmo\DoctrineExtensions::registerAnnotations();
$annotationReader = new \Doctrine\Common\Annotations\AnnotationReader();
$cachedAnnotationReader = new \Doctrine\Common\Annotations\CachedReader($annotationReader, $cache);
$annotationDriver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($cachedAnnotationReader, self::$namespaceArray);
$config = new \Doctrine\ORM\Configuration;
$config->setProxyNamespace('Proxy');
$config->setAutoGenerateProxyClasses(self::$isDevMode); // this can be based on production config.
// register metadata driver
$config->setMetadataDriverImpl($annotationDriver);
// use our allready initialized cache driver
$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);
if (defined('DIR_FILES_CACHE')) {
$config->setProxyDir(DIR_FILES_CACHE);
} else {
$config->setProxyDir(sys_get_temp_dir());
}
// create event manager and hook prefered extension listeners
$evm = new \Doctrine\Common\EventManager();
$prefix = new TablePrefix(null);
$prefix->useNamespace(true);
$evm->addEventListener(\Doctrine\ORM\Events::loadClassMetadata, $prefix);
$blameableListener = new \Gedmo\Blameable\BlameableListener();
$blameableListener->setAnnotationReader($config->getMetadataDriverImpl()->getReader());
//class_exists makes this usable with the command-line
if (class_exists('\User') && ($u = new \User()) != false) {
$blameableListener->setUserValue($u->getUserID());
}
$evm->addEventSubscriber($blameableListener);
$timestampableListener = new \Gedmo\Timestampable\TimestampableListener();
$timestampableListener->setAnnotationReader($config->getMetadataDriverImpl()->getReader());
$evm->addEventSubscriber($timestampableListener);
$config->addFilter('soft-deleteable', '\Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter');
return EntityManager::create($connectionOptions, $config, $evm);
and the entity is (which sets up the repository) is:
namespace Innertube\Models;
defined('C5_EXECUTE') or die('Access Denied.');
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Entity(repositoryClass="DeviceRepository") @ORM\Table(name="Devices")
* @Gedmo\SoftDeleteable(fieldName="deletedOn")
**/
class Device {
and the repository is:
namespace Innertube\Models;
defined('C5_EXECUTE') or die('Access Denied.');
use Doctrine\ORM\EntityRepository;
class DeviceRepository extends EntityRepository {
|
[DCOM-179] Underscore at the end of a label is not working with annotations Created: 03/Mar/13 Updated: 03/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | Annotations |
| Affects Version/s: | 2.3 |
| Fix Version/s: | 2.3 |
| Type: | Bug | Priority: | Minor |
| Reporter: | exoon | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
apache2, php 5.4, mysql |
||
| Description |
|
use Zend\Form\Annotation; [...] works:
works not:
Error message: /vendor/doctrine/common/lib/Doctrine/Common/Annotations/AnnotationException.php:52 [Semantical Error] Couldn't find constant Namespace\Entity\::LABEL, property ... The _ at the end is missing. |
[DCOM-191] Wrong inflection for "identity" Created: 07/May/13 Updated: 07/May/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | 2.3 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Minor |
| Reporter: | Tom Vogt | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
OS X and Linux, PHP 5.4.x |
||
| Description |
|
console doctrine:generate:entities For an association named "identities", the code generator creates the two methods |
[DCOM-130] Paths in Doctrine\Common\Cache\FileCache could create large directory indexes Created: 23/Oct/12 Updated: 10/May/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | Caching |
| Affects Version/s: | 2.3 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Minor |
| Reporter: | R Churchill | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
Any |
||
| Description |
|
The way paths are created within FileCache currently, there is a theoretical maximum of 16^12 directories in the cache directory, which is quite a large number. Usually schemes like this are used to restrict the number of files in one directory. Comparing with git, for example, the dirs are arranged 00/ and then the object store within those directories, which is a lot more manageable, say if you happen to type ls in the cache directory, you will get a maximum listing of 256 dirs. PhpThumb does something similar when caching images. How about something like this for getFilename(): $idHash = md5($id); return $path . $id . $this->extension; Not nearly so elegant, but I think this has better properties for the file system. Also I would be tempted to use one of the sha family hashes and not to include the $id within the filename, but perhaps this is helpful for debugging? |
| Comments |
| Comment by Julian Higman [ 10/May/13 ] |
|
We hit this problem in a live system - with a lot of cached items, the number of subdirectories that FileCache creates can exceed the number that an ext3 filesystem allows in a single directory (about 32000). After that, an attempt to cache a new item can get an error like this: mkdir() [function.mkdir]: Too many links Our solution was similar to that suggested:
protected function getFilename($id) {
$path = implode(str_split(md5($id), 2), DIRECTORY_SEPARATOR);
$path = $this->directory . DIRECTORY_SEPARATOR . $path;
return $path . DIRECTORY_SEPARATOR . $id . $this->extension;
}
It splits the md5 of the item id into parts of length 2, rather than the original 12. This creates a deeply nested structure, but which won't ever exceed the limit on number of subdirectories in any one directory. It's the same subdirectory pattern used by default by Apache mod_disk_cache, as well. |
[DCOM-180] Entity with field $key passes orm:validate but db create will fail Created: 03/Mar/13 Updated: 03/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine Common |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Trivial |
| Reporter: | exoon | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
apache2 php mysql |
||
| Description |
|
There should be a warning if you name a field $key. |