<?php
trait DataCollector {
private $collectionData = array();
final private function setData( $data ) {
$this->CollectionData[] = $data;
return $this;
}
public function getCollectedData() {
return $this->CollectionData;
}
}
class Form {}
class Field extends Form {
use DataCollector;
public function __construct( $type, $text = NULL ) {
$this->setData( $type )->setData( $text );
}
}
$Field1 = new Field( 'text' );
$Field1->getCollectedData();
$Field2 = new Field;
$Field2->getCollectedData( 'html', 'hello' );
Warning: Private methods cannot be final as they are never overridden by other classes in /in/YrCCB on line 5
Deprecated: Creation of dynamic property Field::$CollectionData is deprecated in /in/YrCCB on line 6
Fatal error: Uncaught ArgumentCountError: Too few arguments to function Field::__construct(), 0 passed in /in/YrCCB on line 28 and at least 1 expected in /in/YrCCB:20
Stack trace:
#0 /in/YrCCB(28): Field->__construct()
#1 {main}
thrown in /in/YrCCB on line 20
Process exited with code 255.
Output for 8.3.2
Warning: Private methods cannot be final as they are never overridden by other classes in /in/YrCCB on line 5
Warning: Private methods cannot be final as they are never overridden by other classes in /in/YrCCB on line 17
Deprecated: Creation of dynamic property Field::$CollectionData is deprecated in /in/YrCCB on line 6
Fatal error: Uncaught ArgumentCountError: Too few arguments to function Field::__construct(), 0 passed in /in/YrCCB on line 28 and at least 1 expected in /in/YrCCB:20
Stack trace:
#0 /in/YrCCB(28): Field->__construct()
#1 {main}
thrown in /in/YrCCB on line 20
Process exited with code 255.
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.28
Warning: Private methods cannot be final as they are never overridden by other classes in /in/YrCCB on line 5
Fatal error: Uncaught ArgumentCountError: Too few arguments to function Field::__construct(), 0 passed in /in/YrCCB on line 28 and at least 1 expected in /in/YrCCB:20
Stack trace:
#0 /in/YrCCB(28): Field->__construct()
#1 {main}
thrown in /in/YrCCB on line 20
Process exited with code 255.
Fatal error: Uncaught ArgumentCountError: Too few arguments to function Field::__construct(), 0 passed in /in/YrCCB on line 28 and at least 1 expected in /in/YrCCB:20
Stack trace:
#0 /in/YrCCB(28): Field->__construct()
#1 {main}
thrown in /in/YrCCB on line 20
Process exited with code 255.
Warning: Missing argument 1 for Field::__construct(), called in /in/YrCCB on line 28 and defined in /in/YrCCB on line 20
Notice: Undefined variable: type in /in/YrCCB on line 21