On Dec 6, 2007, at 9:58 AM, Rick Retzko wrote:
...snip...
$completed=self::update(); //<== THIS IS THE PROBLEM LINE
...snip...
When I change that line to "$completed=self::$this-
>_aData['action'].'()';" (which contains the string 'update'), the
line is read, but nothing happens.
When I add "$action=$this->_aData['action'].'()';", then change the
line to "$completed=self::$action;", I get the following error
message:
Fatal error: Access to undeclared static property: actions::$action
in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\cjmea
\hs_choir\classes\class.actions.php5 on line 37.
Here's what you're looking for. Also... my two cents... name your
class something less common than actions and capitalize your class
names - this helps with readability and making it clear that something
is a class. Use protected instead of private unless you really need
visibility contained to the current class for some reason. If you
extended your actions class, the new class wouldn't be able to access
the private methods and variables.
<?php
class RetzkoActions
{
protected $_aData;
protected $_table;
public function __construct()
{
$this->_aData = array();
$this->_table = false;
}
protected function update()
{
echo "Update being executed!\n";
return true;
}
public function do_action($table, $data)
{
$this->_aData = $data;
$this->{$this->_aData['action']}();
// as you can see this is hard to read...
// so it's probably worth doing this
$action = $this->_aData['action'];
$this->$action();
}
}
$instance = new RetzkoActions();
$instance->do_action('someTable', array('action' => 'update'));
?>
_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk
NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com
Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php