/[cvs]/joko/doc/twingled/SampleNewsPosts/DummyNamespaces in PHP - final proposal.twingle
ViewVC logotype

Annotation of /joko/doc/twingled/SampleNewsPosts/DummyNamespaces in PHP - final proposal.twingle

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Thu Mar 6 21:40:56 2003 UTC (21 years, 4 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
+ initial commit

1 joko 1.1 <!-- @metadata-begin --><pre>
2    
3     @sequence main
4     @title DummyNamespaces in PHP - final proposal
5     @file C:\home\amo\develop\netfrag.org\joko\doc\twingled\SampleNewsPosts\DummyNamespaces in PHP - final proposal.twingle
6     @url http://grasshopper.netfrag.org/c/home/amo/develop/netfrag.org/joko/doc/twingled/SampleNewsPosts/DummyNamespaces in PHP - final proposal.twingle
7     @is-a rfc, rfp
8     @todo tbd
9    
10     @glossary
11     rfc [request for comments] (the classic)
12     rfp [refactoring proposal] (code already written)
13     tbd [to be discussed] (api not fixed yet)
14    
15     @sequence cvs-info
16     $Id$
17     $Log$
18    
19     </pre><!-- @metadata-end -->
20    
21    
22     DummyNamespaces in PHP - final proposal
23    
24     The problem: (copied from ancestor document)
25     [...]
26     Here is the glitch: We actually have two *different*
27     types of namespaces following this proposed component
28     architecture:
29     - ClassNamespace
30     - ModuleNamespace
31     [...]
32    
33    
34     The solution:
35    
36     We split up everything into *two* things:
37     - two layers (core, api) ...
38     ... to get better code structure
39     - two types of things to manage (native php classes, our modules)
40     ... to get better api structure
41     -> just the api layer adds namespacing support!
42     -> the core layer is "dumb" ;-)
43    
44    
45     1. core layer (mk)
46    
47     php::mkComponent should be able to pass back instances
48     of components from *both* namespaces using infrastructure
49     code from the php:: namespace, which is:
50    
51     php::mkInstance should pass back a new instance
52     of a component from the ClassNamespace.
53    
54     php::mkModule should pass back a new instance
55     of a component from the ModuleNamespace.
56    
57    
58     2. api layer (use,get)
59    
60     php::useNamespace limits the scope of the core...
61     ... in a way that further operations occour on
62     namespaces get prefixed by this namespace.
63     Must accept an identifier which designates the
64     to-be-used namespace. This identifier should be
65     capable to point to components living in either
66     the ClassNamespace *or* the ModuleNamespace.
67    
68     php::getComponent should return an instance
69     of a component regardless in which namespace
70     it lives. (It can be a class *or* a module)
71     Given the logic required for php::useNamespace,
72     we can reduce the amount of arguments required
73     to actually get to a component:
74     Just a "global" declaration would be required
75     on top of your "metacode" ...
76     php::useNamespace('Deep::nested::Module');
77     ... and inside it you are able to do:
78     php::getComponent('Even::more::deeper::Submodule');
79     Of course (master requirement for getting our
80     stuff with bareface's neutral proposal together) - the same should also work

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed