PluginProbe
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / trunk
Yoast SEO – Advanced SEO with real-time guidance and built-in AI vtrunk
28.5 28.4 28.3 28.2 28.1 28.0 27.9 27.8 27.7 27.6 27.5 trunk 18.0 18.1 18.2 18.3 18.4 18.4.1 18.5 18.5.1 18.6 18.7 18.8 18.9 19.0 All 129 releases
← All changes | src/surfaces/schema-helpers-surface.php +53 -3 18.0 → trunk View file →
@@ -1,8 +1,9 @@
1 1 <?php
2 2
3 3 namespace Yoast\WP\SEO\Surfaces;
4 4
5 +use Yoast\WP\SEO\Exceptions\Forbidden_Property_Mutation_Exception;
5 6 use Yoast\WP\SEO\Helpers\Schema;
6 7 use YoastSEO_Vendor\Symfony\Component\DependencyInjection\ContainerInterface;
7 8
8 9 /**
@@ -48,13 +49,62 @@
48 49 *
49 50 * @return mixed The helper class.
50 51 */
51 52 public function __get( $helper ) {
53 + return $this->container->get( $this->get_helper_class( $helper ) );
54 + }
55 +
56 + /**
57 + * Magic isset for ensuring helper exists.
58 + *
59 + * @param string $helper The helper to get.
60 + *
61 + * @return bool Whether the helper exists.
62 + */
63 + public function __isset( $helper ) {
64 + return $this->container->has( $this->get_helper_class( $helper ) );
65 + }
66 +
67 + /**
68 + * Prevents setting dynamic properties and unsetting declared properties
69 + * from an inaccessible context.
70 + *
71 + * @param string $name The property name.
72 + * @param mixed $value The property value.
73 + *
74 + * @return void
75 + *
76 + * @throws Forbidden_Property_Mutation_Exception Set is never meant to be called.
77 + */
78 + public function __set( $name, $value ) { // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed -- __set must have a name and value - PHPCS #3715.
79 + throw Forbidden_Property_Mutation_Exception::cannot_set_because_property_is_immutable( $name );
80 + }
81 +
82 + /**
83 + * Prevents unsetting dynamic properties and unsetting declared properties
84 + * from an inaccessible context.
85 + *
86 + * @param string $name The property name.
87 + *
88 + * @return void
89 + *
90 + * @throws Forbidden_Property_Mutation_Exception Unset is never meant to be called.
91 + */
92 + public function __unset( $name ) {
93 + throw Forbidden_Property_Mutation_Exception::cannot_unset_because_property_is_immutable( $name );
94 + }
95 +
96 + /**
97 + * Get the class name from a helper slug
98 + *
99 + * @param string $helper The name of the helper.
100 + *
101 + * @return string
102 + */
103 + protected function get_helper_class( $helper ) {
52 104 if ( \in_array( $helper, $this->capitalized_helpers, true ) ) {
53 105 $helper = \strtoupper( $helper );
54 106 }
55 107 $helper = \implode( '_', \array_map( 'ucfirst', \explode( '_', $helper ) ) );
56 - $class = "Yoast\WP\SEO\Helpers\Schema\\{$helper}_Helper";
57 -
58 - return $this->container->get( $class );
108 + return "Yoast\WP\SEO\Helpers\Schema\\{$helper}_Helper";
59 109 }
60 110 }