mirror of
https://github.com/moodle/moodle.git
synced 2025-01-29 19:50:14 +01:00
MDL-57273 persistent: protected custom getters
(and setters).
This commit is contained in:
parent
9c91a9593d
commit
599acbe776
@ -149,7 +149,7 @@ class competency_framework extends persistent {
|
||||
*/
|
||||
protected function get_default_data() {
|
||||
$data = parent::get_default_data();
|
||||
$data->taxonomies = $this->get_persistent()->get_taxonomies();
|
||||
$data->taxonomies = $this->get_persistent()->get('taxonomies');
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
@ -83,7 +83,7 @@ class framework_exporter {
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
implode(',', $this->framework->get_taxonomies())
|
||||
implode(',', $this->framework->get('taxonomies'))
|
||||
);
|
||||
$writer->add_data($row);
|
||||
|
||||
|
@ -178,7 +178,7 @@ class competency_framework extends persistent {
|
||||
*
|
||||
* @return array Contains the list of taxonomy constants indexed by level.
|
||||
*/
|
||||
public function get_taxonomies() {
|
||||
protected function get_taxonomies() {
|
||||
$taxonomies = explode(',', $this->raw_get('taxonomies'));
|
||||
|
||||
// Indexing first level at 1.
|
||||
@ -212,7 +212,7 @@ class competency_framework extends persistent {
|
||||
*
|
||||
* @param string|array $taxonomies A string, or an array where the values are the term constants.
|
||||
*/
|
||||
public function set_taxonomies($taxonomies) {
|
||||
protected function set_taxonomies($taxonomies) {
|
||||
if (is_array($taxonomies)) {
|
||||
$taxonomies = implode(',', $taxonomies);
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ class evidence extends persistent {
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function get_desca() {
|
||||
protected function get_desca() {
|
||||
$value = $this->raw_get('desca');
|
||||
if ($value !== null) {
|
||||
$value = json_decode($value);
|
||||
@ -147,7 +147,7 @@ class evidence extends persistent {
|
||||
* @param mixed $value
|
||||
* @return mixed
|
||||
*/
|
||||
public function set_desca($value) {
|
||||
protected function set_desca($value) {
|
||||
if ($value !== null) {
|
||||
if (!is_scalar($value) && !is_array($value) && !($value instanceof stdClass)) {
|
||||
throw new coding_exception('$a format not supported.');
|
||||
@ -162,7 +162,7 @@ class evidence extends persistent {
|
||||
*
|
||||
* @param null|string|moodle_url $url The URL.
|
||||
*/
|
||||
public function set_url($url) {
|
||||
protected function set_url($url) {
|
||||
if ($url instanceof \moodle_url) {
|
||||
$url = $url->out(false);
|
||||
}
|
||||
|
@ -58,6 +58,8 @@ abstract class persistent {
|
||||
* @param stdClass $record If set will be passed to {@link self::from_record()}.
|
||||
*/
|
||||
public function __construct($id = 0, stdClass $record = null) {
|
||||
global $CFG;
|
||||
|
||||
if ($id > 0) {
|
||||
$this->raw_set('id', $id);
|
||||
$this->read();
|
||||
@ -65,6 +67,36 @@ abstract class persistent {
|
||||
if (!empty($record)) {
|
||||
$this->from_record($record);
|
||||
}
|
||||
if ($CFG->debugdeveloper) {
|
||||
$this->verify_protected_methods();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is used to verify that custom getters and setters are declared as protected.
|
||||
*
|
||||
* Persistent properties should always be accessed via get('property') and set('property', 'value') which
|
||||
* will call the custom getter or setter if it exists. We do not want to allow inconsistent access to the properties.
|
||||
*/
|
||||
final protected function verify_protected_methods() {
|
||||
$properties = static::properties_definition();
|
||||
|
||||
foreach ($properties as $property => $definition) {
|
||||
$method = 'get_' . $property;
|
||||
if (method_exists($this, $method)) {
|
||||
$reflection = new ReflectionMethod($this, $method);
|
||||
if (!$reflection->isProtected()) {
|
||||
throw new coding_exception('The method ' . get_class($this) . '::'. $method . ' should be protected.');
|
||||
}
|
||||
}
|
||||
$method = 'set_' . $property;
|
||||
if (method_exists($this, $method)) {
|
||||
$reflection = new ReflectionMethod($this, $method);
|
||||
if (!$reflection->isProtected()) {
|
||||
throw new coding_exception('The method ' . get_class($this) . '::'. $method . ' should be protected.');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user