|
Posted by Jerry Stuckle on 04/13/07 13:12
Schraalhans Keukenmeester wrote:
> strawberry wrote:
>> On Apr 13, 1:51 am, "strawberry" <zac.ca...@gmail.com> wrote:
>>> I'm trying to extend a class (written by others) and was wondering if
>>> there's a standard a way of passing a $_GET request to a class. Here's
>>> what I have (see below). If I hardcode $where, something like
>>>
>>> $where = " WHERE `firstname` = 'John' "
>>>
>>> and then pass it as an argument into the scope of a 'select' function
>>> then it works fine, but otherwise the query just appears to hang.
>>>
>>> I'm deliberately not including the class or class extender at this
>>> stage, but I'll add them to this thread later if required.
>>>
>>> foreach ($_GET as $condition_key => $condition_value) {
>>> $condition[] =" $condition_key = '$condition_value' ";
>>> }
>>> if(is_null($condition)){
>>> $where = " WHERE 1 ";
>>> }else{
>>> $conditionString = implode('AND', $condition);
>>> $where = " WHERE $conditionString ";
>>> }
>>
> You're reposing the question? Or ?
>
> I am not sure myself which is preferrable: having the class handle the
> $_GET superglobal array itself, which makes the client code programming
> even easier, or leaving it to the client code, allowing for more custom
> use. I've seen both examples, each has their practical (dis-)advantages.
>
> If someone has a good argument on why to prefer one over the other (or
> even an entirely different way) I'd also be helped!
>
> Sh.
The program should handle it, not the class.
You should make your classes as generic as possible. If you parse the
values in the program then pass the parsed values to the object, your
code can be used in a number of ways. If you parse it in the class,
you're restricted to using the $_GET array - and those specific index
(field) names.
For instance - what happens if you have the data stored in $_POST
instead of $_GET? Or $_SESSION? You can argue that you'd just pass the
proper superglobal to the object.
However, what happens if on one page you have a checkbox "Sex" - and on
another page it's called "Gender"? Or maybe even just "sex"? You can't
do it if you process the superglobal. You can argue that you can make
it a condition that the field must be named "Sex". But I don't like
unwarranted restrictions like that.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
[Back to original message]
|