[FX.php List] Another Request for FX.php (version 4.0) feedback

Derek Bastille bastille at arsc.edu
Sat Jun 4 20:08:43 MDT 2005


Chris,
   This looks like it will certainly simplify the 'do it' commands.  
However, I think that it would be helpful to specify where each 
constant is used in the constant itself.  That is, it is intuitive that 
FX_RETURN_DATA and FX_RETURN_NULL are options for $returnDataSet, but 
not so clear for the other constants (like FX_FULL could be interpreted 
for $useInnerArray or $returnType).
   So how about:
Inner_Array__
FX_ARRAY_ALL = true
FX_ARRAY_SINGLE = false

Return_Type__
FX_RETURN_OBJECT = 'object'
FX_RETURN_FULL = 'full'
FX_RETURN_BASIC = 'basic'

Action_Type__
FX_ACTION_FIND
FX_ACTION_FINDALL
FX_ACTION_OPEN
FX_ACTION_CLOSE
FX_ACTION_NEW
FX_ACTION_EDIT
FX_ACTION_DUPLICATE
FX_ACTION_DELETE

   These would be a bit more typing than before, but I think that they 
would be more clear:

$myData = $myQuery->DoFXAction(FX_ACTION_FIND, FX_RETURN_DATA, 
FX_ARRAY_ALL, FX_RETURN_OBJECT);

  Lastly, could you review briefly, what the difference between 'full' 
and 'basic' would be?

Thanks!  FX.php has been a _huge_ help for me and also lets me farm out 
parts the web stuff to other php-savvy staffers (who don't know the 
internals of FileMaker databases) and concentrate on developing other 
DBA duties.

Regards,
   Derek

On Jun 4, 2005, at 11:04 AM, Chris Hansen wrote:

> Johan,
>
> Good call!  I don't know that it would make sense to supply constants 
> for every function (where applicable), but I think it certainly makes 
> sense in this case.  Of course, the tricky part is using constants 
> that are easy to remember for people.  I would like to (1) avoid 
> abbreviations, and (2) start each constant name with 'FX_' -- to avoid 
> possible conflicts with other constants.  How do the following sound 
> for each parameter:
>
> Data_Return__
> FX_RETURN_DATA = true
> FX_RETURN_NULL = false
>
> Inner_Array__
> FX_PORTALS = true
> FX_FIELDS = false
>
> Return_Types_
> FX_OBJECT = 'object'
> FX_FULL = 'full'
> FX_BASIC = 'basic'
>
> Please note that I'm not stuck on any of these constants' names.  The 
> inner array particularly is hard to name since it can be looked at 
> multiple ways: inner or outer (depending on point of view), repeating 
> fields or portals versus normal fields, etc.  What is easy to 
> remember?
>
> Also, for clarification, very basic examples of both the current and 
> new search styles (using defaults) follow:
>
> _CURRENT___
> $myQuery = new FX($FileMakerIP, $FileMakerPort, 'FMPro7');
> $myQuery->SetDBData('MyDatabase', 'MyWebLayout');
> $myQuery->AddDBParam('CustomerID', $_POST['ID'], 'eq');
> $myData = $myQuery->FMFind();
> ...
> foreach ($myData['data'] as $key => $value) {
>     echo("$value['FirstName'][0] $value['LastName'][0]");
> }
>
> _NEW______
> $myQuery = new FX($FileMakerIP, $FileMakerPort, 'FMPro7');
> $myQuery->SetDBData('MyDatabase', 'MyWebLayout');
> $myQuery->AddDBParam('CustomerID', $_POST['ID'], 'eq');
> $myData = $myQuery->DoFXAction(FX_FIND);
> ...
> foreach ($myData as $key => $value) { // the 'data' index is not 
> needed with the object return type
>     echo("$value['FirstName'] $value['LastName']"); // no trailing [0] 
> here =)
> }
>
> Thoughts?  Thanks again for the feedback!
>
> --Chris Hansen
>   creator of FX.php
>   "The best way from FileMaker to the Web."
>   www.iViking.org
>
> On Jun 4, 2005, at 12:11 PM, Johan Visser wrote:
>
>> Chris,
>>
>> Although I do not understand the $useInnerArray parameter yet, here 
>> is some
>> feedback.
>>
>> The action constants make the call very clear now, can't you do the 
>> same for
>> the other parameters in the function call.
>> I find the true/false mean nothing at first glance, unless you look 
>> up the
>> documentation.
>>
>> So
>> $currentData = DoFXAction(FX_FIND, true, false);
>> can become:
>> $currentData = DoFXAction(FX_FIND, RET_DATA, USE_OUTER);
>>
>> this makes the call in all its variations even easier to read.
>>
>> Keep up the good work,
>>
>> Johan Visser
>> BPA Services, NL
>>
>>
>>
>>
>>
>> -----Oorspronkelijk bericht-----
>> Van: fx.php_list-bounces at mail.iviking.org
>> [mailto:fx.php_list-bounces at mail.iviking.org]Namens Chris Hansen
>> Verzonden: zaterdag 4 juni 2005 19:40
>> Aan: FX.php Discussion List
>> Onderwerp: [FX.php List] Another Request for FX.php (version 4.0)
>> feedback
>>
>>
>> Greetings List!
>>
>> I hope everyone will give this message a read, regardless of FX.php
>> experience level.  I really value your feedback!  If you'd like to
>> comment, but would prefer not to post to the list, feel free to 
>> respond
>> to me directly.
>>
>> I've received a contribution from a fellow named Chuck Chang to add
>> https support for connecting to FM7SA.  (This is a great new feature 
>> of
>> FM7, so kudos to Chuck for his contribution.)  Very nice!  That said,
>> he also suggested that perhaps the FX declaration is not the place to
>> specify the return format (i.e. whether or not to add that last layer
>> of the array) and I think I agree with him.  Here's what I propose:
>>
>> * In the new version I've added this function:
>>
>> function DoFXAction($currentAction, $returnDataSet = true,
>> $useInnerArray=false, $returnType = 'object')
>>
>> * This is used in conjunction with come new constants, like this:
>>
>> $currentData = DoFXAction(FX_FIND, true, false);
>>
>> * You'll note that now there's no need to remember multiple action
>> functions.  Each action constant should be logical to remember:
>> FX_OPEN, FX_CLOSE, FX_DELETE, FX_DUPLICATE, FX_EDIT, etc.  No
>> abbreviations.  Easy?
>>
>> * $useInnerArray can default to false, since this is a new function.
>>
>> * This does mean that support for removal of this last level wouldn't
>> be present in the old functions, but old code wouldn't use this 
>> anyway.
>>
>> * You might also note that new value -- object -- for $returnType.
>> Basically, after the last discussion about removing the top level of
>> the array (while mowing the lawn =), I realized "hey! this is an
>> object.  People can pull error data, etc. by using class variables!"
>> So, for the new function, the default return type will be 'object'
>> which will return just the data.  I'll add new class variables for the
>> other elements of the top level array.  True there will be some minor
>> variable semi-duplication, but some functions need to work with the
>> existing class variables, whereas the new ones will ONLY be set just
>> before data return.
>>
>> * With the new function, an error object will ALWAYS be returned on an
>> error, even for FileMaker errors.
>>
>> * The original action functions are STILL THERE for those who want the
>> easiest way to access complex FileMaker data.
>>
>> * Support for the new object return type will be added to the original
>> action functions.
>>
>> I realize that's a lot to sort through, but I really would like lots 
>> of
>> feedback on this.  My hope is that these additions/changes will do
>> three things:
>>
>> 1) simplify coding (one function to remember, with logical action
>> constants)
>>
>> 2) simplify data handling (by stripping away extra, often unnecessary,
>> data in the return when desired)
>>
>> 3) add power (by doing the above and ALWAYS returning an error for any
>> error)
>>
>> I really appreciate any feedback, and thanks for reading through this
>> monster message.
>>
>> Best,
>>
>> --Chris Hansen
>>    creator of FX.php
>>    "The best way from FileMaker to the Web."
>>    www.iViking.org
>>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                         Derek Bastille | Phone: (907)450-8643
     PO Box 756020, Fairbanks AK, 99775 | Fax:   (907)450-8601
    Arctic Region Supercomputing Center | email: bastille at arsc.edu
User Services Consultant/ISSO-Accounts |        fndlb at uaf.edu
      PGP public key: http://www.arsc.edu/~bastille/dereksKey.txt
----------------------------------------------------------------------
     ARSC Help Desk:  email: consult at arsc.edu  voice: (907)450-8602
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



More information about the FX.php_List mailing list