: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
namespace Yoast\WP\SEO\Surfaces;
use Yoast\WP\SEO\Exceptions\Forbidden_Property_Mutation_Exception;
use Yoast\WP\SEO\Helpers\Schema;
use YoastSEO_Vendor\Symfony\Component\DependencyInjection\ContainerInterface;
* Class Schema_Helpers_Surface.
* Surface for the indexables.
* @property Schema\Article_Helper $article
* @property Schema\HTML_Helper $html
* @property Schema\ID_Helper $id
* @property Schema\Image_Helper $image
* @property Schema\Language_Helper $language
class Schema_Helpers_Surface {
* @var ContainerInterface
* Helpers that should be fully capitalized.
private $capitalized_helpers = [ 'html', 'id' ];
* @param ContainerInterface $container The dependency injection container.
public function __construct( ContainerInterface $container ) {
$this->container = $container;
* Magic getter for getting helper classes.
* @param string $helper The helper to get.
* @return mixed The helper class.
public function __get( $helper ) {
return $this->container->get( $this->get_helper_class( $helper ) );
* Magic isset for ensuring helper exists.
* @param string $helper The helper to get.
* @return bool Whether the helper exists.
public function __isset( $helper ) {
return $this->container->has( $this->get_helper_class( $helper ) );
* Prevents setting dynamic properties and unsetting declared properties
* from an inaccessible context.
* @param string $name The property name.
* @param mixed $value The property value.
* @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.
* @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 );
* Get the class name from a helper slug
* @param string $helper The name of the helper.
protected function get_helper_class( $helper ) {
if ( \in_array( $helper, $this->capitalized_helpers, true ) ) {
$helper = \strtoupper( $helper );
$helper = \implode( '_', \array_map( 'ucfirst', \explode( '_', $helper ) ) );
return "Yoast\WP\SEO\Helpers\Schema\\{$helper}_Helper";