[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