Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 3.9.x will end* 10 May 2021 (12 months).
  • Bug fixes for security issues in 3.9.x will end* 8 May 2023 (36 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.
<?php

declare(strict_types=1);

namespace Phpml;

use Phpml\Exception\FileException;
use Phpml\Exception\SerializeException;

class ModelManager
{
    public function saveToFile(Estimator $estimator, string $filepath): void
    {
        if (!is_writable(dirname($filepath))) {
< throw new FileException(sprintf('File "%s" can\'t be saved.', basename($filepath)));
> throw new FileException(sprintf('File "%s" cannot be saved.', basename($filepath)));
} $serialized = serialize($estimator); if (!isset($serialized[0])) { throw new SerializeException(sprintf('Class "%s" can not be serialized.', gettype($estimator))); } $result = file_put_contents($filepath, $serialized, LOCK_EX); if ($result === false) {
< throw new FileException(sprintf('File "%s" can\'t be saved.', basename($filepath)));
> throw new FileException(sprintf('File "%s" cannot be saved.', basename($filepath)));
} } public function restoreFromFile(string $filepath): Estimator { if (!file_exists($filepath) || !is_readable($filepath)) {
< throw new FileException(sprintf('File "%s" can\'t be open.', basename($filepath)));
> throw new FileException(sprintf('File "%s" cannot be opened.', basename($filepath)));
}
< $object = unserialize((string) file_get_contents($filepath), [Estimator::class]); < if ($object === false) {
> $object = unserialize((string) file_get_contents($filepath)); > if ($object === false || !$object instanceof Estimator) {
throw new SerializeException(sprintf('"%s" can not be unserialized.', basename($filepath))); } return $object; } }