PluginProbe
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / 28.5
Yoast SEO – Advanced SEO with real-time guidance and built-in AI v28.5
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/helpers-surface.php +67 -35 18.428.5 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;
6 7 use YoastSEO_Vendor\Symfony\Component\DependencyInjection\ContainerInterface;
7 8
8 9 /**
@@ -9,42 +10,43 @@
9 10 * Class Helpers_Surface.
10 11 *
11 12 * Surface for the indexables.
12 13 *
13 - * @property Helpers\Asset_Helper $asset
14 - * @property Helpers\Author_Archive_Helper $author_archive
15 - * @property Helpers\Blocks_Helper $blocks
16 - * @property Helpers\Capability_Helper $capability
17 - * @property Helpers\Current_Page_Helper $current_page
18 - * @property Helpers\Date_Helper $date
19 - * @property Helpers\Environment_Helper $environment
20 - * @property Helpers\Home_Url_Helper $home_url
21 - * @property Helpers\Image_Helper $image
22 - * @property Helpers\Indexable_Helper $indexable
23 - * @property Helpers\Indexing_Helper $indexing
24 - * @property Helpers\Input_Helper $input
25 - * @property Helpers\Language_Helper $language
26 - * @property Helpers\Meta_Helper $meta
27 - * @property Helpers\Notification_Helper $notification
28 - * @property Helpers\Options_Helper $options
29 - * @property Helpers\Pagination_Helper $pagination
30 - * @property Helpers\Permalink_Helper $permalink
31 - * @property Helpers\Post_Helper $post
32 - * @property Helpers\Post_Type_Helper $post_type
33 - * @property Helpers\Primary_Term_Helper $primary_term
34 - * @property Helpers\Product_Helper $product
35 - * @property Helpers\Redirect_Helper $redirect
36 - * @property Helpers\Request_Helper $request
37 - * @property Helpers\Require_File_Helper $require_file
38 - * @property Helpers\Robots_Helper $robots
39 - * @property Helpers\Short_Link_Helper $short_link
40 - * @property Helpers\Site_Helper $site
41 - * @property Helpers\String_Helper $string
42 - * @property Helpers\Taxonomy_Helper $taxonomy
43 - * @property Helpers\Url_Helper $url
44 - * @property Helpers\User_Helper $user
45 - * @property Helpers\Woocommerce_Helper $woocommerce
46 - * @property Helpers\Wordpress_Helper $wordpress
14 + * @property Helpers\Asset_Helper $asset
15 + * @property Helpers\Author_Archive_Helper $author_archive
16 + * @property Helpers\Blocks_Helper $blocks
17 + * @property Helpers\Capability_Helper $capability
18 + * @property Helpers\Current_Page_Helper $current_page
19 + * @property Helpers\Date_Helper $date
20 + * @property Helpers\Environment_Helper $environment
21 + * @property Helpers\First_Time_Configuration_Notice_Helper $first_time_configuration_notice
22 + * @property Helpers\Home_Url_Helper $home_url
23 + * @property Helpers\Image_Helper $image
24 + * @property Helpers\Indexable_Helper $indexable
25 + * @property Helpers\Indexing_Helper $indexing
26 + * @property Helpers\Input_Helper $input
27 + * @property Helpers\Language_Helper $language
28 + * @property Helpers\Meta_Helper $meta
29 + * @property Helpers\Notification_Helper $notification
30 + * @property Helpers\Options_Helper $options
31 + * @property Helpers\Pagination_Helper $pagination
32 + * @property Helpers\Permalink_Helper $permalink
33 + * @property Helpers\Post_Helper $post
34 + * @property Helpers\Post_Type_Helper $post_type
35 + * @property Helpers\Primary_Term_Helper $primary_term
36 + * @property Helpers\Product_Helper $product
37 + * @property Helpers\Redirect_Helper $redirect
38 + * @property Helpers\Require_File_Helper $require_file
39 + * @property Helpers\Robots_Helper $robots
40 + * @property Helpers\Short_Link_Helper $short_link
41 + * @property Helpers\Site_Helper $site
42 + * @property Helpers\String_Helper $string
43 + * @property Helpers\Social_Profiles_Helper $social_profiles
44 + * @property Helpers\Taxonomy_Helper $taxonomy
45 + * @property Helpers\Url_Helper $url
46 + * @property Helpers\User_Helper $user
47 + * @property Helpers\Woocommerce_Helper $woocommerce
48 + * @property Helpers\Wordpress_Helper $wordpress
47 49 */
48 50 class Helpers_Surface {
49 51
50 52 /**
@@ -110,9 +112,9 @@
110 112 * Magic isset for ensuring helper exists.
111 113 *
112 114 * @param string $helper The helper to get.
113 115 *
114 - * @return bool The helper class.
116 + * @return bool Whether the helper exists.
115 117 */
116 118 public function __isset( $helper ) {
117 119 return $this->container->has( $this->get_helper_class( $helper ) );
118 120 }
@@ -117,8 +119,37 @@
117 119 return $this->container->has( $this->get_helper_class( $helper ) );
118 120 }
119 121
120 122 /**
123 + * Prevents setting dynamic properties and unsetting declared properties
124 + * from an inaccessible context.
125 + *
126 + * @param string $name The property name.
127 + * @param mixed $value The property value.
128 + *
129 + * @return void
130 + *
131 + * @throws Forbidden_Property_Mutation_Exception Set is never meant to be called.
132 + */
133 + public function __set( $name, $value ) { // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed -- __set must have a name and value - PHPCS #3715.
134 + throw Forbidden_Property_Mutation_Exception::cannot_set_because_property_is_immutable( $name );
135 + }
136 +
137 + /**
138 + * Prevents unsetting dynamic properties and unsetting declared properties
139 + * from an inaccessible context.
140 + *
141 + * @param string $name The property name.
142 + *
143 + * @return void
144 + *
145 + * @throws Forbidden_Property_Mutation_Exception Unset is never meant to be called.
146 + */
147 + public function __unset( $name ) {
148 + throw Forbidden_Property_Mutation_Exception::cannot_unset_because_property_is_immutable( $name );
149 + }
150 +
151 + /**
121 152 * Get the class name from a helper slug
122 153 *
123 154 * @param string $helper The name of the helper.
124 155 *
@@ -125,7 +156,8 @@
125 156 * @return string
126 157 */
127 158 protected function get_helper_class( $helper ) {
128 159 $helper = \implode( '_', \array_map( 'ucfirst', \explode( '_', $helper ) ) );
160 +
129 161 return "Yoast\WP\SEO\Helpers\\{$helper}_Helper";
130 162 }
131 163 }