1<?php
2
3// AUTOMATICALLY GENERATED.  DO NOT EDIT.
4// Use `composer build` to regenerate.
5
6namespace Wikimedia\IDLeDOM\Helper;
7
8trait CSSStyleRule {
9
10	// Underscore is used to avoid conflicts with DOM-reserved names
11	// phpcs:disable PSR2.Methods.MethodDeclaration.Underscore
12	// phpcs:disable MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName
13
14	/**
15	 * Handle an attempt to get a non-existing property on this
16	 * object.  The default implementation raises an exception
17	 * but the implementor can choose a different behavior:
18	 * return null (like JavaScript), dynamically create the
19	 * property, etc.
20	 * @param string $prop the name of the property requested
21	 * @return mixed
22	 */
23	abstract protected function _getMissingProp( string $prop );
24
25	/**
26	 * Handle an attempt to set a non-existing property on this
27	 * object.  The default implementation raises an exception
28	 * but the implementor can choose a different behavior:
29	 * ignore the operation (like JavaScript), dynamically create
30	 * the property, etc.
31	 * @param string $prop the name of the property requested
32	 * @param mixed $value the value to set
33	 */
34	abstract protected function _setMissingProp( string $prop, $value ): void;
35
36	// phpcs:enable
37
38	/**
39	 * @param string $name
40	 * @return mixed
41	 */
42	public function __get( string $name ) {
43		'@phan-var \Wikimedia\IDLeDOM\CSSStyleRule $this';
44		// @var \Wikimedia\IDLeDOM\CSSStyleRule $this
45		switch ( $name ) {
46			case "cssText":
47				return $this->getCssText();
48			case "parentRule":
49				return $this->getParentRule();
50			case "parentStyleSheet":
51				return $this->getParentStyleSheet();
52			case "type":
53				return $this->getType();
54			case "selectorText":
55				return $this->getSelectorText();
56			case "style":
57				return $this->getStyle();
58			default:
59				break;
60		}
61		'@phan-var \Wikimedia\IDLeDOM\Helper\CSSStyleRule $this';
62		// @var \Wikimedia\IDLeDOM\Helper\CSSStyleRule $this
63		return $this->_getMissingProp( $name );
64	}
65
66	/**
67	 * @param string $name
68	 * @return bool
69	 */
70	public function __isset( string $name ): bool {
71		'@phan-var \Wikimedia\IDLeDOM\CSSStyleRule $this';
72		// @var \Wikimedia\IDLeDOM\CSSStyleRule $this
73		switch ( $name ) {
74			case "cssText":
75				return true;
76			case "parentRule":
77				return $this->getParentRule() !== null;
78			case "parentStyleSheet":
79				return $this->getParentStyleSheet() !== null;
80			case "type":
81				return true;
82			case "selectorText":
83				return true;
84			case "style":
85				return true;
86			default:
87				break;
88		}
89		return false;
90	}
91
92	/**
93	 * @param string $name
94	 * @param mixed $value
95	 */
96	public function __set( string $name, $value ): void {
97		'@phan-var \Wikimedia\IDLeDOM\CSSStyleRule $this';
98		// @var \Wikimedia\IDLeDOM\CSSStyleRule $this
99		switch ( $name ) {
100			case "cssText":
101				$this->setCssText( $value );
102				return;
103			case "selectorText":
104				$this->setSelectorText( $value );
105				return;
106			case "style":
107				$this->setStyle( $value );
108				return;
109			default:
110				break;
111		}
112		'@phan-var \Wikimedia\IDLeDOM\Helper\CSSStyleRule $this';
113		// @var \Wikimedia\IDLeDOM\Helper\CSSStyleRule $this
114		$this->_setMissingProp( $name, $value );
115	}
116
117	/**
118	 * @param string $name
119	 */
120	public function __unset( string $name ): void {
121		'@phan-var \Wikimedia\IDLeDOM\CSSStyleRule $this';
122		// @var \Wikimedia\IDLeDOM\CSSStyleRule $this
123		switch ( $name ) {
124			case "cssText":
125				break;
126			case "parentRule":
127				break;
128			case "parentStyleSheet":
129				break;
130			case "type":
131				break;
132			case "selectorText":
133				break;
134			case "style":
135				break;
136			default:
137				return;
138		}
139		$trace = debug_backtrace();
140		while (
141			count( $trace ) > 0 &&
142			$trace[0]['function'] !== "__unset"
143		) {
144			array_shift( $trace );
145		}
146		trigger_error(
147			'Undefined property' .
148			' via ' . ( $trace[0]['function'] ?? '' ) . '(): ' . $name .
149			' in ' . ( $trace[0]['file'] ?? '' ) .
150			' on line ' . ( $trace[0]['line'] ?? '' ),
151			E_USER_NOTICE
152		);
153	}
154
155	/**
156	 * @param string $val
157	 */
158	public function setStyle( string $val ): void {
159		'@phan-var \Wikimedia\IDLeDOM\CSSStyleRule $this';
160		// @var \Wikimedia\IDLeDOM\CSSStyleRule $this
161		$this->getStyle()->setCssText( $val );
162	}
163
164}
165