| Server IP : 62.60.133.156 / Your IP : 216.73.217.51 Web Server : LiteSpeed System : Linux linux24.centraldnserver.com 4.18.0-553.141.2.lve.el8.x86_64 #1 SMP Wed Jul 8 16:10:02 UTC 2026 x86_64 User : mimradmin ( 1166) PHP Version : 7.4.33 Disable Function : show_source, system, shell_exec, passthru, exec, popen, proc_open MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/thread-self/cwd/wp-content/plugins/woocommerce-old/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;
}
}