Giter VIP home page Giter VIP logo

Comments (9)

lsmith77 avatar lsmith77 commented on August 23, 2024

yes .. this is a "feature" .. allowing you to cast to other types. however it gets really messy as anyone calling find afterwards will get the casted version. so its a potentially very dangerous feature that we might need to get rid of or limit to subclasses.

from phpcr-odm.

dbu avatar dbu commented on August 23, 2024

limiting to cast to subclasses sounds ok (we currently already do the oposite, if the stored class is a subclass of the one passed in, the result is of the subclass).

we might add some hint or something to allow the unchecked cast, but then again it seems quite an esoteric use case to me. maybe people should then just ask for the raw phpcr node and map themselves.

from phpcr-odm.

dbu avatar dbu commented on August 23, 2024

@lsmith77 do we want to change this for 1.1? what approach should we chose? limit to subclasses? which direction makes sense?

  1. same class => trivial
  2. stored class is a parent of the $class parameter => use $class?
  3. stored class is a subclass of the $class parameter => use the subclass? or the $class?
  4. everything else would throw an exceptoin

from phpcr-odm.

dantleech avatar dantleech commented on August 23, 2024

I am +1 for returning the original class or a class with the original class in its "classparents" attribute. I am almost 100% sure that this is what the ORM does.

e.g.

$content = $dm->find('Cms\Content', '/cms/content/article-content'); //returns Cms\ArticleContent for example

https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/UnitOfWork.php#L2949

from phpcr-odm.

dbu avatar dbu commented on August 23, 2024

with original class you mean the one passed as $class argument, right?

so for 2. what would happen? in your example, it would be find('Cms\ArticleContent', '/cms/content') and there is a Cms\Content at that path.

from phpcr-odm.

dantleech avatar dantleech commented on August 23, 2024

I would expect it to return null I think

from phpcr-odm.

lsmith77 avatar lsmith77 commented on August 23, 2024

so if the class stored and the class requested do not match, you expect null to be returned?

from phpcr-odm.

dbu avatar dbu commented on August 23, 2024

the null feels weird to me too. the only comparable situation in orm would be table inheritance.

say i have class Abstract and class A extends Abstract and class B extends Abstract. when i do $em->find('A', 42) but 42 is of class B, what does the orm do? (i guess i should do find('Abstract', 42) usually, but say i expect to really find A. will the orm return me B(42) or null or throw an exception? @beberlei or @Ocramius would you happen to know this?

from phpcr-odm.

dbu avatar dbu commented on August 23, 2024

trying to get some input on this with a tweet. would love to clean it up for 1.1 as its a potential BC break. but one we really need to do as the current state is weird.

from phpcr-odm.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.