{"action":"closed","issue":{"number":71,"created_at":"2011-10-09T14:52:14Z","pull_request":{"diff_url":null,"patch_url":null,"html_url":null},"body":"Scope of Change\n====\nThe XP framework's core will store class / classloader associations and\nprovide reflective means of retrieving them.\n\n\nRationale\n====\nAnnotations and other reflective means are broken when using the \nio.cca.ArchiveClassLoader.\n\n\nFunctionality\n====\n\nMapping storage\n----\nThe existance of a key by name \"classloader.{fqcn}\" in the XP-registry\ndenotes a different classloader is used, its absence means the default\nclass loader was used.\n\n\nlang.ClassLoader API extension\n----\nA new method getClassBytes() will be added to lang.ClassLoader(). It\nwill load a class' sourcecode when given a fully qualified classname.\n\n\nlang.XPClass::detailsForClass() changes\n----\nInstead of loading the class bytes by file_get_contents(), the \ndetailsForClass() method will use the class' classloader's loadClassBytes()\nmethod.\n\n\nAdditions to lang.XPClass' interface\n----\nA new method getClassLoader() will be added to lang.XPClass. It will\nreturn the ClassLoader instance the class was loaded with. \n\nThe XPClass::getClassLoader() method:\n\n```php\n<?php\n  /**\n   * Retrieve the class loader a class was loaded with\n   *\n   * @access  public\n   * @return  &lang.ClassLoader\n   */\n  function &getClassLoader() {\n    if (!($cl= &xp::registry('classloader.'.$this->name))) {\n      $cl= &ClassLoader::getDefault();\n    }\n    return $cl;\n  }\n?>\n```\n\n\nSecurity considerations\n====\nn/a\n\n\nSpeed impact\n====\nSlightly slower\n\n\nDependencies\n====\nn/a\n\n\nRelated documents\n====\n- http://xp-framework.net/rfc/contrib/rfc0071.diff\n  Patch implementing this RFC\n\nComments\n====\n- friebe, Tue Aug 22 17:24:53 CEST 2006\n  Set status to discussion. Use a rather small time period as this\n  does not break anything.\n\n<EOF>\n","comments":0,"title":"RFC 0071: Class / Classloader associations","updated_at":"2011-10-09T14:52:15Z","url":"https://api.github.com/repos/thekid/rfc/issues/71","id":1856384,"assignee":null,"milestone":null,"closed_at":"2011-10-09T14:52:15Z","user":{"avatar_url":"https://secure.gravatar.com/avatar/26f07e3b262e9a80436f368cb11bd0c2?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/thekid","id":696742,"login":"thekid"},"html_url":"https://github.com/thekid/rfc/issues/71","labels":[{"name":"implemented","url":"https://api.github.com/repos/thekid/rfc/labels/implemented","color":"e102d8"},{"name":"rfc","url":"https://api.github.com/repos/thekid/rfc/labels/rfc","color":"02e10c"}],"state":"closed"},"legacy":{"number":71,"action":"closed","issue":1856384}}