Standardize serialize denying

This commit is contained in:
Dylan K. Taylor 2021-09-03 21:07:10 +01:00
parent aa5a9f6d12
commit b026ada489
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
3 changed files with 39 additions and 17 deletions

View File

@ -93,6 +93,7 @@ use pocketmine\utils\Config;
use pocketmine\utils\Filesystem;
use pocketmine\utils\Internet;
use pocketmine\utils\MainLogger;
use pocketmine\utils\NotSerializable;
use pocketmine\utils\Process;
use pocketmine\utils\Promise;
use pocketmine\utils\Terminal;
@ -160,6 +161,8 @@ use const ZLIB_ENCODING_GZIP;
* The class that manages everything
*/
class Server{
use NotSerializable;
public const BROADCAST_CHANNEL_ADMINISTRATIVE = "pocketmine.broadcast.admin";
public const BROADCAST_CHANNEL_USERS = "pocketmine.broadcast.user";
@ -1667,13 +1670,4 @@ class Server{
$this->nextTick += 0.05;
}
}
/**
* Called when something attempts to serialize the server instance.
*
* @throws \BadMethodCallException because Server instances cannot be serialized
*/
public function __sleep(){
throw new \BadMethodCallException("Cannot serialize Server instance");
}
}

View File

@ -27,6 +27,7 @@ use function preg_match;
trait EnumTrait{
use RegistryTrait;
use NotSerializable;
/**
* Registers the given object as an enum member.
@ -101,12 +102,4 @@ trait EnumTrait{
public function __clone(){
throw new \LogicException("Enum members cannot be cloned");
}
public function __sleep(){
throw new \LogicException("Enum members cannot be serialized");
}
public function __wakeup(){
throw new \LogicException("Enum members cannot be unserialized");
}
}

View File

@ -0,0 +1,35 @@
<?php
/*
*
* ____ _ _ __ __ _ __ __ ____
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* @author PocketMine Team
* @link http://www.pocketmine.net/
*
*
*/
declare(strict_types=1);
namespace pocketmine\utils;
trait NotSerializable{
final public function __serialize(){
throw new \LogicException("Serialization of " . static::class . " objects is not allowed");
}
final public function __unserialize(array $data){
throw new \LogicException("Unserialization of " . static::class . " objects is not allowed");
}
}