[FX.php List] Re: FX.php_List Digest, Vol 33, Issue 15

Vision Computer Consulting info at visioncomputerconsulting.com
Mon Apr 16 20:15:01 MDT 2007


I  am interested in CIFX. Where can I find it?

Thanks.

Stephen

On Apr 13, 2007, at 12:49 PM, DC wrote:

> cool. thanks for the note. i'll definitely post these instructions  
> around but i wanted to get a little more feedback to refine the ideas.
>
> i see what you mean about the config file - i just thought it was  
> so nice to have that data tucked in the CI config directory. of  
> course, since the CIFX class can accept an array sent to its  
> constructor you could just pass that information in the new call to  
> CIFX like this:
>
> $config['dataServer']='127.0.0.1';
> $config['dataPort']='591';
> $config['dataType']='FMPro5/6'; // or FMPro7
> $config['dataURLType']='http';
> $this->load->library('CIFX', $config);
>
> so, if you have the call in a controller you can still use FX to  
> target any server you want.
>
> i'll be working through other CI-FX issues in the near future so  
> please send me your Filemaker/PHP frameworks resource link!
>
> dan
>
> John Lannon had written:
>> Hey Dan,
>> Thanks a lot for the post, it's an extremely useful contribution.  
>> I've been using CI with Filemaker and other backends for several  
>> projects in the past year and am glad to see that others are  
>> starting to adopt web application frameworks. I personally don't  
>> know how I used to build web apps without CI (or Rails or CakePHP,  
>> take your pick).
>> In any case, I definitely think you should submit your tutorial to  
>> the CI wiki and to other Filemaker forums as well. I spent a bit  
>> of time tooling with the FX class and using a new constructor for  
>> CI, but scrapped that idea (not OO enough, I guess).  Wrapping FX  
>> in the CIFX class makes sense and conforms to PHP's OO standards.  
>> I would definitely like to use your idea in future projects ...
>> The only thing I would add is that by passing the basic parameters  
>> to CIFX via the configuration file, one would tie oneself to a  
>> single data source. Although I would imagine that most users would  
>> only use one data source ( i.e., one Filemaker Server machine),  
>> I've been on a project or two in which multiple Filemaker sources  
>> are used. In this case, the static config file would be  
>> insufficient. I'd have to check the most recent CI docs, but I  
>> believe one can pass configuration arguments to their library  
>> directly (bypassing the default config file), but by doing so, the  
>> config file becomes inaccessible. So, I would add a note to your  
>> step 4 mentioning this.
>> I have been working on a web resource that provides information  
>> about integrating Filemaker with web development frameworks. If  
>> you're interested in helping out, please feel free to email me.
>> Thanks,
>> John Lannon
>> Anvil Automation
>> http://www.anvilautomation.com
>>     Message: 5
>>     Date: Fri, 13 Apr 2007 12:29:59 -0400
>>     From: DC <dan.cynosure at dbmscan.com  
>> <mailto:dan.cynosure at dbmscan.com>>
>>     Subject: [FX.php List] REDO-FX.php as a Library in CodeIgniter
>>             framework
>>     To: "FX.php Discussion List" < fx.php_list at mail.iviking.org
>>     <mailto:fx.php_list at mail.iviking.org>>
>>     Message-ID: < 461FB007.9010609 at dbmscan.com
>>     <mailto:461FB007.9010609 at dbmscan.com>>
>>     Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>>     Hi,
>>     OO-ps... I didn't follow OO practices when submitting my  
>> integration
>>     technique. I've redone steps 3, 4, and 5 so that you do not  
>> modify
>>     FX.php at all - you simply extend it using PHP's OO  
>> capability. The
>>     full
>>     instructions with (easier) redone steps follow.
>>     -------------------------------------------
>>     I put together what I think is the cleanest integration  
>> possible between
>>     FX.php and CodeIgniter (CI). It's pretty easy to do.
>>     If you are looking for a good way of expanding your PHP horizons,
>>     CodeIgniter is a good way to do it. If you haven't seen  
>> CodeIgniter,
>>     head over to http://codeigniter.com <http://codeigniter.com> to
>>     check it out. In short, it is a
>>     PHP Framework that helps you organize code and offers nice  
>> integrated
>>     libraries. It is also PHP4 and 5 friendly, highly object- 
>> oriented, and
>>     extendable.
>>     I've been testing out FX.php with CI and I like it a lot.
>>     Here's how I got my set up working:
>>     1) Download, install and configure CI per the very good  
>> instructions at
>>     the site. If you have problems, the CI forum is helpful. It  
>> should take
>>     less than an hour for an intermediate PHP person to get to  
>> hello world
>>     (welcome_message.php). Time: 1 hour.
>>     2) Once you've got CI running, put the latest copy of FX.php,
>>     FX_Error.php, and FX_constants.php in CI's application/libraries/
>>     directory. Time: 5 minutes tops.
>>     ....THIS STEP CHANGED from previous message....
>>     3) Drop this class extension into the same directory with  
>> FX.php (CI's
>>     application/libraries/ directory).
>>     <?php if (!defined('BASEPATH')) exit('No direct script access
>>     allowed');
>>     / 
>> *------------------------------------------------------------------*/
>>     // DEC 20070413 wrapper for CI integration
>>     // needs to be able to init with params in an array
>>     // load these using config file FX.php
>>     / 
>> *------------------------------------------------------------------*/
>>     require('FX.php');
>>     class CIFX extends FX {
>>             function CIFX ($params)
>>             {
>>                     parent::FX(
>>                     $params['dataServer'],
>>                     $params['dataPort'],
>>                     $params['dataType'],
>>                     $params['dataURLType']
>>                     );
>>             }
>>     }
>>     ?>
>>     This class extension for FX.php lets CI load FX.php with an  
>> array as an
>>     argument. External libraries like FX.php need no direct  
>> modifications to
>>     integrate with CI properly - just extend them with a wrapper  
>> function
>>     that accepts arrays and passes them on.
>>     In summary, you need a new class called CIFX which will be the  
>> new
>>     constructor. It translates the array passed in by the CI class  
>> loader
>>     into the 4 parameters the normal FX.php constructor can  
>> understand.
>>     Time: Another 5 minutes, tops.
>>     ....THIS STEP CHANGED from previous message...
>>     4) Make a file called CIFX.php (the same name as the class so  
>> CI can
>>     load it automatically) and put it in CI's application/config/
>>     directory.
>>     It should contain the data that is normally found in  
>> server_data.php in
>>     the FX.php distribution but formatted like a PHP file like this:
>>     <?php  if (!defined('BASEPATH')) exit('No direct script access
>>     allowed');
>>     /*
>>      
>> |-------------------------------------------------------------------- 
>> ------
>>     | FX FMP database access data
>>      
>> |-------------------------------------------------------------------- 
>> ------
>>     */
>>     $config['dataServer']=' 127.0.0.1 <http://127.0.0.1>';
>>     $config['dataPort']='591';
>>     $config['dataType']='FMPro5/6'; // or FMPro7
>>     $config['dataURLType']='http';
>>     ?>
>>     CI will load this data and pass it to the new CIFX.php class  
>> constructor
>>     for you - it can do that because the names are the same. Time:  
>> 5 more
>>     minutes.
>>     ....THIS STEP CHANGED from previous message...
>>     5) Almost there... make a "controller" file called  
>> "search.php" and put
>>     it in the application/controllers/ directory with this PHP  
>> code (modify
>>     the database, layout and field data):
>>     <?php
>>     class Search extends Controller {
>>     function Search()
>>     {
>>             parent::Controller();
>>     }
>>     function id($id)
>>     {
>>             // CI knows where to find the
>>             // CIFX.php FX wrapper file at
>>             // CI path: application/libraries/CIFX.php
>>             // FMP WPE data (IP, port, server version,
>>             // and url scheme) is in custom config file at
>>             // CI path: application/config/CIFX.php
>>             $this->load->library('CIFX');
>>             // tell FX which DB, layout to use and
>>             // how many records to return
>>             $this->cifx->SetDBData('database.fp5', 'layout', 1);
>>             // build a find request, field name, data, comparison
>>             $this->cifx->AddDBParam ('id', $id, 'eq');
>>             // do find, return dataset, no flattening, meta object
>>             $res = $this->cifx->DoFXAction(FX_ACTION_FIND, TRUE,  
>> TRUE);
>>             echo '<pre>';
>>             print_r($res);
>>             echo '</pre>';
>>     }
>>     }
>>     ?>
>>     This AddDBParam example assumes you have a database with the  
>> fieldname
>>     'id' - you, of course, can change that to suit. I suggest just  
>> pointing
>>     the FX requests to a database you've already got set up and  
>> working.
>>     Time: If you use a database already set up, 5 minutes to  
>> modify this
>>     code and fire it up.
>>     6) Point your browser to:
>>     http://example.com/path_to_CI/index.php/search/id/1
>>     Note: if you followed the CI install instructions on how to  
>> use an
>>     .htaccess file to use mod_rewrite for nice urls, then you can  
>> drop the
>>     index.php and just use:
>>     http://example.com/path_to_CI/search/id/1
>>     ....THIS DESCRIPTION CHANGED from previous message...
>>     CI takes the URL segments and loads one as a controller file  
>> (search),
>>     calls one as a function (id), and passes the last one as a  
>> variable (1)
>>     for your id() controller function to use as a search  
>> parameter. Nice and
>>     sweet. It's a great way of organizing projects!
>>     Let me know if you have problems with this. I'd like to get a  
>> little
>>     feedback from the FX folks first and then post instructions at  
>> the CI
>>     forums.
>>     Did it take you an hour and 20 minutes? Let me know!
>>     dan
>> --------------------------------------------------------------------- 
>> ---
>> _______________________________________________
>> FX.php_List mailing list
>> FX.php_List at mail.iviking.org
>> http://www.iviking.org/mailman/listinfo/fx.php_list
> _______________________________________________
> FX.php_List mailing list
> FX.php_List at mail.iviking.org
> http://www.iviking.org/mailman/listinfo/fx.php_list
>



More information about the FX.php_List mailing list