[Phpmyadmin-devel] Refactoring: Displaying query results
Alex Marin
alex.ukf at gmail.com
Thu Jun 28 18:08:07 CEST 2012
Hi Chanaka,
On Thu, Jun 28, 2012 at 5:04 AM, Chanaka Dharmarathna
<pe.chanaka.ck at gmail.com> wrote:
> I'm going to look into getting PMA_mimeDefaultFunction() function inside
> PMA_DisplayResults class. (currently it is under core.lib.php)
> I think it is possible to use this function inside that class, and call
> directly ($this->_mimeDefaultFunction()) instead of using additional string
> to store method name. (current way)
>
> Then the default function for the mime transformation is inside a class.
> But the other existing transformations functions are still global functions.
> If that is not good (feels not good), those also should convert to classes.
I've seen that the PMA_mimeDefaultFunction is only currently used in
DisplayResults.class.php, so I think it's a good idea to move it there.
> And if other transformations converted to classes, in which way I can create
> objects of those classes.
> Should I need to use string to store the class name and then use it as
> belows.
>
> $class_name = 'TestClass';
> $ob = new $class_name($params);
>
> It is very helpful for me if you can share your suggestions.
As general info, to use a transformation plugin, you have to include it and
then instantiate it. For example, if you want to use Text_Plain_Sql:
include_once 'libraries/plugins/transformations/Text_Plain_Sql.class.php';
$plugin_manager = null; // Still working on this, so you can use null for now
$sql_transf = new Text_Plain_Sql($plugin_manager);
Then, you can use the actual transformation by calling:
$sql_transf->applyTransformation();
In DisplayResults.class.php, inside _getTableBody(), there is an init:
[2158] $default_function = 'PMA_mimeDefaultFunction'; // default_function
Then, this variable is passed as an argument to several functions along
the way:
_getDataCellForNumericColumns,
_getDataCellForBlobColumns,
_getDataCellForGeometryColumns,
_getDataCellForNonNumericAndNonBlobColumns,
_getRowData,
_addClass
_handleNonPrintableContents
Some of the functions only pass it further, while others use actually use it.
I replaced the use of the PMA_transformation_[FILENAME]() with the
use of $transformation_plugin->applyTransformation() and kept the same
arguments.
So I had to pass an instance of the transformation class as an argument
($transformation_plugin), but my problem was that in some cases I had to use
the applyTransformations method, while in others, I had to use the default
function ( PMA_mimeDefaultFunction() ). Therefore, where needed, I set the
argument $transformation_plugin = $default_function, and, in the above
mentioned methods I checked and used accordingly, something similar to:
$result = ($transformation_plugin != $default_function
? $transformation_plugin->applyTransformation(
$data,
$transform_options,
$meta
)
: $default_function($data)
)
Hope that helps. I will write some wikis for all of the plugins, but I thought
I should first finish the whole system (the plugin managers).
--
Alex
More information about the Developers
mailing list