WordPress.org

Make WordPress Core

Ticket #38323: wp-object-type.2.diff

File wp-object-type.2.diff, 7.3 KB (added by flixos90, 3 years ago)
  • src/wp-includes/class-wp-object-subtype.php

     
     1<?php
     2/**
     3 * Object Type API: WP_Object_Subtype class
     4 *
     5 * @package WordPress
     6 * @subpackage Object
     7 * @since 4.8.0
     8 */
     9
     10/**
     11 * Core class used for interacting with object subtypes.
     12 *
     13 * @since 4.8.0
     14 */
     15abstract class WP_Object_Subtype implements WP_Type {
     16        /**
     17         * Object subtype name.
     18         *
     19         * @since 4.8.0
     20         * @access protected
     21         * @var string
     22         */
     23        protected $name = '';
     24
     25        /**
     26         * Object type name.
     27         *
     28         * @since 4.8.0
     29         * @access protected
     30         * @var string
     31         */
     32        protected $object_type = '';
     33
     34        /**
     35         * Constructor.
     36         *
     37         * @since 4.8.0
     38         * @access public
     39         *
     40         * @param string $name Object subtype name.
     41         */
     42        public function __construct( $name ) {
     43                $this->set_object_type();
     44
     45                $this->name = $name;
     46        }
     47
     48        /**
     49         * Returns the name of the object subtype.
     50         *
     51         * @since 4.8.0
     52         * @access public
     53         *
     54         * @return string Object subtype name.
     55         */
     56        public function get_name() {
     57                return $this->name;
     58        }
     59
     60        /**
     61         * Returns the name of the object type.
     62         *
     63         * @since 4.8.0
     64         * @access public
     65         *
     66         * @return string Object type name.
     67         */
     68        public function get_object_type() {
     69                return $this->object_type;
     70        }
     71
     72        /**
     73         * Sets the name of the object type.
     74         *
     75         * @since 4.8.0
     76         * @access protected
     77         */
     78        protected abstract function set_object_type();
     79}
  • src/wp-includes/class-wp-object-type.php

    Property changes on: src/wp-includes/class-wp-object-subtype.php
    ___________________________________________________________________
    Added: svn:executable
    ## -0,0 +1 ##
    +*
    \ No newline at end of property
     
     1<?php
     2/**
     3 * Object Type API: WP_Object_Type class
     4 *
     5 * @package WordPress
     6 * @subpackage Object
     7 * @since 4.8.0
     8 */
     9
     10/**
     11 * Core class used for interacting with object types.
     12 *
     13 * @since 4.8.0
     14 */
     15class WP_Object_Type implements WP_Type {
     16        /**
     17         * Object type name.
     18         *
     19         * @since 4.8.0
     20         * @access private
     21         * @var string
     22         */
     23        private $name = '';
     24
     25        /**
     26         * Object type instances.
     27         *
     28         * @since 4.8.0
     29         * @access private
     30         * @static
     31         * @var array
     32         */
     33        private static $instances = array();
     34
     35        /**
     36         * Constructor.
     37         *
     38         * @since 4.8.0
     39         * @access public
     40         *
     41         * @param string $name Object type name.
     42         */
     43        public function __construct( $name ) {
     44                $this->name = $name;
     45        }
     46
     47        /**
     48         * Returns the name of the object type.
     49         *
     50         * @since 4.8.0
     51         * @access public
     52         *
     53         * @return string Object type name.
     54         */
     55        public function get_name() {
     56                return $this->name;
     57        }
     58
     59        /**
     60         * Returns an general object type instance.
     61         *
     62         * @since 4.8.0
     63         * @access public
     64         * @static
     65         *
     66         * @param string $object_type Object type name.
     67         * @return WP_Object_Type|null Object type instance, or null if invalid object type.
     68         */
     69        public static function get_instance( $object_type ) {
     70                if ( ! in_array( $object_type, array( 'post', 'term', 'comment', 'user' ), true ) ) {
     71                        return null;
     72                }
     73
     74                if ( ! isset( self::$instances[ $object_type ] ) ) {
     75                        self::$instances[ $object_type ] = new self( $object_type );
     76                }
     77
     78                return self::$instances[ $object_type ];
     79        }
     80}
  • src/wp-includes/class-wp-post-type.php

    Property changes on: src/wp-includes/class-wp-object-type.php
    ___________________________________________________________________
    Added: svn:executable
    ## -0,0 +1 ##
    +*
    \ No newline at end of property
     
    1111 * Core class used for interacting with post types.
    1212 *
    1313 * @since 4.6.0
     14 * @since 4.8.0 Now inherits WP_Object_Subtype.
    1415 *
    1516 * @see register_post_type()
    1617 */
    17 final class WP_Post_Type {
     18final class WP_Post_Type extends WP_Object_Subtype {
    1819        /**
    1920         * Post type key.
    2021         *
     
    381382         *                                Default empty array.
    382383         */
    383384        public function __construct( $post_type, $args = array() ) {
    384                 $this->name = $post_type;
     385                parent::__construct( $post_type );
    385386
    386387                $this->set_props( $args );
    387388        }
     
    718719        public function remove_hooks() {
    719720                remove_action( 'future_' . $this->name, '_future_post_hook', 5 );
    720721        }
     722
     723        /**
     724         * Sets the name of the object type.
     725         *
     726         * @since 4.8.0
     727         * @access protected
     728         */
     729        protected function set_object_type() {
     730                $this->object_type = 'post';
     731        }
    721732}
  • src/wp-includes/class-wp-taxonomy.php

     
    1111 * Core class used for interacting with taxonomies.
    1212 *
    1313 * @since 4.7.0
     14 * @since 4.8.0 Now inherits WP_Object_Subtype.
    1415 */
    15 final class WP_Taxonomy {
     16final class WP_Taxonomy extends WP_Object_Subtype {
    1617        /**
    1718         * Taxonomy key.
    1819         *
     
    241242         *                                  Default empty array.
    242243         */
    243244        public function __construct( $taxonomy, $object_type, $args = array() ) {
    244                 $this->name = $taxonomy;
     245                parent::__construct( $taxonomy );
    245246
    246247                $this->set_props( $object_type, $args );
    247248        }
     
    450451        public function remove_hooks() {
    451452                remove_filter( 'wp_ajax_add-' . $this->name, '_wp_ajax_add_hierarchical_term' );
    452453        }
     454
     455        /**
     456         * Sets the name of the object type.
     457         *
     458         * @since 4.8.0
     459         * @access protected
     460         */
     461        protected function set_object_type() {
     462                $this->object_type = 'term';
     463        }
    453464}
  • src/wp-includes/interface-wp-type.php

     
     1<?php
     2/**
     3 * Object Type API: WP_Type interface
     4 *
     5 * @package WordPress
     6 * @subpackage Object
     7 * @since 4.8.0
     8 */
     9
     10/**
     11 * Core interface used by type classes.
     12 *
     13 * @since 4.8.0
     14 */
     15interface WP_Type {
     16        /**
     17         * Returns the name of the type.
     18         *
     19         * @since 4.8.0
     20         * @access public
     21         *
     22         * @return string Type name.
     23         */
     24        public function get_name();
     25}
  • src/wp-settings.php

    Property changes on: src/wp-includes/interface-wp-type.php
    ___________________________________________________________________
    Added: svn:executable
    ## -0,0 +1 ##
    +*
    \ No newline at end of property
     
    145145require( ABSPATH . WPINC . '/class-wp-ajax-response.php' );
    146146require( ABSPATH . WPINC . '/formatting.php' );
    147147require( ABSPATH . WPINC . '/capabilities.php' );
     148require( ABSPATH . WPINC . '/interface-wp-type.php' );
     149require( ABSPATH . WPINC . '/class-wp-object-type.php' );
     150require( ABSPATH . WPINC . '/class-wp-object-subtype.php' );
    148151require( ABSPATH . WPINC . '/class-wp-roles.php' );
    149152require( ABSPATH . WPINC . '/class-wp-role.php' );
    150153require( ABSPATH . WPINC . '/class-wp-user.php' );