| Server IP : 62.72.47.131 / Your IP : 216.73.217.34 Web Server : Apache/2.4.66 (Debian) System : Linux 975cdb959a49 5.14.0-611.55.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 19 15:19:29 EDT 2026 x86_64 User : ( 501) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/html/wp-content/plugins/woocommerce/src/Api/Attributes/ |
Upload File : |
<?php
declare(strict_types=1);
namespace Automattic\WooCommerce\Api\Attributes;
use Attribute;
/**
* Marks a code-API element as for WooCommerce internal use.
*
* Discoverable through the `_apiMetadata` GraphQL field as an entry with
* `name = "internal"` and `value = true`. The marking is informational —
* authorization remains the job of {@see PublicAccess}, {@see RequiredCapability},
* and any plugin-supplied authorization attributes.
*
* When a class, property or enum case has this attribute, the generated
* GraphQL `description` is prefixed with `[Internal] `, and
* when the element has no `#[Description]` at all, a default body
* (`[Internal] For WooCommerce core internal usage only.`) is emitted so the
* marker still reaches stock introspection.
*
* `#[Internal]` on a class marks only that class — its fields and enum cases
* are not implicitly marked too. A tool that wants to treat the contents of
* an internal type as internal by association must apply that rule itself
* when it reads the metadata.
*
* The attribute targets classes, properties, and enum cases; see
* {@see Metadata} for the reasoning behind excluding methods.
*/
#[Attribute( Attribute::TARGET_CLASS | Attribute::TARGET_PROPERTY | Attribute::TARGET_CLASS_CONSTANT )]
class Internal extends Metadata {
/**
* Construct an `internal` metadata entry with value `true`.
*/
public function __construct() {
parent::__construct( 'internal', true );
}
/**
* Prepend `[Internal] ` to the description, supplying a default body when
* the element has no `#[Description]` of its own. See
* {@see Metadata::transform_description()} for the contract.
*
* @param string $description Incoming description (empty when no `#[Description]`).
*/
public function transform_description( string $description ): string {
if ( '' === $description ) {
$description = 'For WooCommerce core internal usage only.';
}
return '[Internal] ' . $description;
}
}