napisałem odpowiednik klasy SSP by po pierwsze móc ja rozszerzyć o bardziej skomplikowane zapytania sql (problem z left join) a po drugie mam własny sqlHelper
przykładowy formater wersja robocza nie do krytyki

use Framework\Ajax\Master\Response; use Framework\Models\ModelDatatable; class Pages extends Response { public function __construct($get) { $this->checkAutorised('administrator'); //output formatters $makeRowID = function ($d) { return $this->makeRowID($d); }; $makeUrl = function ($d) { return $this->makeUrl($d); }; $makeLabel = function ($d) { return $this->makeLabel($d); }; $makeDate = function ($d) { return $this->makeDate($d); }; //execute query $datatable->setTable('pages'); $datatable->addConfig('DT_RowId', 'id', $makeRowID); $datatable->addConfig('title', 'title'); $datatable->addConfig('url', 'url', $makeUrl); $datatable->addConfig('publish', 'publish', $makeLabel); $datatable->addConfig('mod_date', 'mod_date', $makeDate); $this->responseValue($datatable->get(), 'json'); } private function makeRowID($value) { return 'row_' . $value; } private function makeUrl($value) { return CONFIG_DOMAIN_URL . $value . '.html'; } private function makeLabel($value) { return $value ? '<span class="label label-success">OPUBLIKOWANA</span>' : '<span class="label label-warning">NIEOPUBLIKOWANA</span>'; } private function makeDate($value) { } }
jak widać zmienna np. $makeRowID spokojnie przekazuje metodę prywatną do obcej klasy gdzie spodziewałem się raczej błędu jednak się to prawidłowo wykonuje czyli w zasadzie chronione nie jest
php7
ps. zdaje sobie sprawę że robienie takich funkcji jak "private function makeRowID" to gruba przesada jednak formatery mogą być czasami bardziej skomplikowane niż te tutaj