Server IP : 104.21.14.103 / Your IP : 18.216.190.57 Web Server : LiteSpeed System : Linux business53.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : giankuin ( 1871) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/giankuin/thietke365.net/wp-content/plugins/wordpress-seo/lib/ |
Upload File : |
<?php namespace Yoast\WP\Lib; use Exception; use Yoast\WP\Lib\Dependency_Injection\Container_Registry; use Yoast\WP\SEO\Exceptions\Forbidden_Property_Mutation_Exception; use Yoast\WP\SEO\Loader; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\ContainerInterface; /** * Abstract class to extend for the main class in a plugin. */ abstract class Abstract_Main { /** * The DI container. * * @var ContainerInterface|null */ protected $container; /** * A cache for previously requested and constructed surfaces. * * @var mixed[] */ private $cached_surfaces = []; /** * Loads the plugin. * * @throws Exception If loading fails and YOAST_ENVIRONMENT is development. */ public function load() { if ( $this->container ) { return; } try { $this->container = $this->get_container(); Container_Registry::register( $this->get_name(), $this->container ); if ( ! $this->container ) { return; } if ( ! $this->container->has( Loader::class ) ) { return; } $this->container->get( Loader::class )->load(); } catch ( Exception $e ) { if ( $this->is_development() ) { throw $e; } // Don't crash the entire site, simply don't load. } } /** * Magic getter for retrieving a property from a surface. * * @param string $property The property to retrieve. * * @return mixed The value of the property. * * @throws Exception When the property doesn't exist. */ public function __get( $property ) { if ( \array_key_exists( $property, $this->cached_surfaces ) ) { return $this->cached_surfaces[ $property ]; } $surfaces = $this->get_surfaces(); if ( isset( $surfaces[ $property ] ) ) { $this->cached_surfaces[ $property ] = $this->container->get( $surfaces[ $property ] ); return $this->cached_surfaces[ $property ]; } throw new Exception( sprintf( 'Property $%s does not exist.', $property ) ); } /** * Checks if the given property exists as a surface. * * @param string $property The property to retrieve. * * @return bool True when property is set. */ public function __isset( $property ) { if ( \array_key_exists( $property, $this->cached_surfaces ) ) { return true; } $surfaces = $this->get_surfaces(); if ( ! isset( $surfaces[ $property ] ) ) { return false; } return $this->container->has( $surfaces[ $property ] ); } /** * Prevents setting dynamic properties and unsetting declared properties * from an inaccessible context. * * @param string $name The property name. * @param mixed $value The property value. * * @return void * * @throws Forbidden_Property_Mutation_Exception Set is never meant to be called. */ public function __set( $name, $value ) { // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed -- __set must have a name and value - PHPCS #3715. throw Forbidden_Property_Mutation_Exception::cannot_set_because_property_is_immutable( $name ); } /** * Prevents unsetting dynamic properties and unsetting declared properties * from an inaccessible context. * * @param string $name The property name. * * @return void * * @throws Forbidden_Property_Mutation_Exception Unset is never meant to be called. */ public function __unset( $name ) { throw Forbidden_Property_Mutation_Exception::cannot_unset_because_property_is_immutable( $name ); } /** * Loads the DI container. * * @return ContainerInterface|null The DI container. * * @throws Exception If something goes wrong generating the DI container. */ abstract protected function get_container(); /** * Gets the name of the plugin. * * @return string The name. */ abstract protected function get_name(); /** * Gets the surfaces of this plugin. * * @return array A mapping of surface name to the responsible class. */ abstract protected function get_surfaces(); /** * Returns whether or not we're in an environment for Yoast development. * * @return bool Whether or not to load in development mode. */ protected function is_development() { try { return \WPSEO_Utils::is_development_mode(); } catch ( Exception $exception ) { // E.g. when WordPress and/or WordPress SEO are not loaded. return \defined( 'YOAST_ENVIRONMENT' ) && \YOAST_ENVIRONMENT === 'development'; } } }