1<?php
2
3// AUTOMATICALLY GENERATED.  DO NOT EDIT.
4// Use `composer build` to regenerate.
5
6namespace Wikimedia\IDLeDOM\Helper;
7
8trait CSSMarginRule {
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\CSSMarginRule $this';
44		// @var \Wikimedia\IDLeDOM\CSSMarginRule $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 "name":
55				return $this->getName();
56			case "style":
57				return $this->getStyle();
58			default:
59				break;
60		}
61		'@phan-var \Wikimedia\IDLeDOM\Helper\CSSMarginRule $this';
62		// @var \Wikimedia\IDLeDOM\Helper\CSSMarginRule $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\CSSMarginRule $this';
72		// @var \Wikimedia\IDLeDOM\CSSMarginRule $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 "name":
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\CSSMarginRule $this';
98		// @var \Wikimedia\IDLeDOM\CSSMarginRule $this
99		switch ( $name ) {
100			case "cssText":
101				$this->setCssText( $value );
102				return;
103			case "style":
104				$this->setStyle( $value );
105				return;
106			default:
107				break;
108		}
109		'@phan-var \Wikimedia\IDLeDOM\Helper\CSSMarginRule $this';
110		// @var \Wikimedia\IDLeDOM\Helper\CSSMarginRule $this
111		$this->_setMissingProp( $name, $value );
112	}
113
114	/**
115	 * @param string $name
116	 */
117	public function __unset( string $name ): void {
118		'@phan-var \Wikimedia\IDLeDOM\CSSMarginRule $this';
119		// @var \Wikimedia\IDLeDOM\CSSMarginRule $this
120		switch ( $name ) {
121			case "cssText":
122				break;
123			case "parentRule":
124				break;
125			case "parentStyleSheet":
126				break;
127			case "type":
128				break;
129			case "name":
130				break;
131			case "style":
132				break;
133			default:
134				return;
135		}
136		$trace = debug_backtrace();
137		while (
138			count( $trace ) > 0 &&
139			$trace[0]['function'] !== "__unset"
140		) {
141			array_shift( $trace );
142		}
143		trigger_error(
144			'Undefined property' .
145			' via ' . ( $trace[0]['function'] ?? '' ) . '(): ' . $name .
146			' in ' . ( $trace[0]['file'] ?? '' ) .
147			' on line ' . ( $trace[0]['line'] ?? '' ),
148			E_USER_NOTICE
149		);
150	}
151
152	/**
153	 * @param string $val
154	 */
155	public function setStyle( string $val ): void {
156		'@phan-var \Wikimedia\IDLeDOM\CSSMarginRule $this';
157		// @var \Wikimedia\IDLeDOM\CSSMarginRule $this
158		$this->getStyle()->setCssText( $val );
159	}
160
161}
162