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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

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