Hi there,

I'm looking for someone to give me a hug and tell me everything will be ok.
Thinking in terms of low coupling of classes again, it struck me that
passing your applications method parameters as associative arrays may be a
step in the wrong direction. For example, I have a cake component to which I
pass the result of a $this->Model->find(); The result is of course an
associative array. Inside the component, I extract the keys I want and
ignore the rest.  So I may take $params['Post']['title'] and ignore
$params['Post']['comment'].
However, if I happen to change the field names in the database table, the
resulting array keys will also change. This means that not only will this
change affect my Model, but it will also affect anything which is expecting
the field name as a key. So if I change a field in the `posts` table from
'title' to 'some_title', my component will still be expecting
$params['Post']['title'] and so, this part of the system is somewhat tightly
coupled.
The only solutions I can think of are:
    (1) To avoid passing arrays as params and pass them as variables
instead. This may lead to methods expecting a long list of parameters
though. This can be ugly and confusing to the reader.
    (2) Set up the params array to the expected structure before passing it
to the component. However this still means a change in the database table
will ripple through to the controller.

Allowing the component to access the model itself will mean that the
component is still coupled to a Model.

Can anyone suggest alternatives, or at least stroke my forehead and tell me
everything will be ok!

Cheers,

Sonic

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to