HEX
Server: Apache
System: Linux webm010.cluster103.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: iestorre (46869)
PHP: 8.0.30
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/i/e/s/iestorre/moodleAW/moodle310/lib/mlbackend/php/phpml/src/Phpml/ModelManager.php
<?php

declare(strict_types=1);

namespace Phpml;

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

class ModelManager
{
    /**
     * @param Estimator $estimator
     * @param string    $filepath
     *
     * @throws FileException
     * @throws SerializeException
     */
    public function saveToFile(Estimator $estimator, string $filepath)
    {
        if (!is_writable(dirname($filepath))) {
            throw FileException::cantSaveFile(basename($filepath));
        }

        $serialized = serialize($estimator);
        if (empty($serialized)) {
            throw SerializeException::cantSerialize(gettype($estimator));
        }

        $result = file_put_contents($filepath, $serialized, LOCK_EX);
        if ($result === false) {
            throw FileException::cantSaveFile(basename($filepath));
        }
    }

    /**
     * @param string $filepath
     *
     * @return Estimator
     *
     * @throws FileException
     * @throws SerializeException
     */
    public function restoreFromFile(string $filepath) : Estimator
    {
        if (!file_exists($filepath) || !is_readable($filepath)) {
            throw FileException::cantOpenFile(basename($filepath));
        }

        $object = unserialize(file_get_contents($filepath));
        if ($object === false) {
            throw SerializeException::cantUnserialize(basename($filepath));
        }

        return $object;
    }
}