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

DC dan.cynosure at dbmscan.com
Mon Apr 16 22:53:50 MDT 2007


hi stephen,

the CIFX class was sent in the email i posted last week along with  
step by step instructions. there is currently no download location -  
just follow the steps in the email - including copy/pasting code.

let me know if you can't find the email i sent last week, i'll send  
another directly to you.

dan


On Apr 16, 2007, at 10:15 PM, Vision Computer Consulting wrote:

> 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
>>
>
> _______________________________________________
> 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