[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