Skip to content

Commit

Permalink
doctrine#761 Added support for PHP 7.1 identifier nullable return type
Browse files Browse the repository at this point in the history
  • Loading branch information
aurimasniekis committed Jan 13, 2017
1 parent 20bd4af commit 5a29148
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/Doctrine/Common/Proxy/ProxyGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class ProxyGenerator
* Used to match very simple id methods that don't need
* to be decorated since the identifier is known.
*/
const PATTERN_MATCH_ID_METHOD = '((public\s+)?(function\s+%s\s*\(\)\s*)\s*(?::\s*\\\\?[a-z_\x7f-\xff][\w\x7f-\xff]*(?:\\\\[a-z_\x7f-\xff][\w\x7f-\xff]*)*\s*)?{\s*return\s*\$this->%s;\s*})i';
const PATTERN_MATCH_ID_METHOD = '((public\s+)?(function\s+%s\s*\(\)\s*)\s*(?::\s*\?*\\\\?[a-z_\x7f-\xff][\w\x7f-\xff]*(?:\\\\[a-z_\x7f-\xff][\w\x7f-\xff]*)*\s*)?{\s*return\s*\$this->%s;\s*})i';

/**
* The namespace that contains all proxy classes.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@ class LazyLoadableObjectWithTypehints
/** @var \stdClass */
private $identifierFieldReturnClassOneLetter;

/** @var \stdClass */
private $identifierFieldReturnClassOneLetterNullable;

/**
* @return string
*/
Expand Down Expand Up @@ -90,5 +93,10 @@ public function getIdentifierFieldReturnClassOneLetter(): A
return $this->identifierFieldReturnClassOneLetter;
}

public function getIdentifierFieldReturnClassOneLetterNullable(): ?A
{
return $this->identifierFieldReturnClassOneLetterNullable;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class LazyLoadableObjectWithTypehintsClassMetadata implements ClassMetadata
'identifierFieldReturnClassFullUse' => true,
'identifierFieldReturnClassOneWord' => true,
'identifierFieldReturnClassOneLetter' => true,
'identifierFieldReturnClassOneLetterNullable' => true,
];

/**
Expand All @@ -59,6 +60,7 @@ class LazyLoadableObjectWithTypehintsClassMetadata implements ClassMetadata
'identifierFieldReturnClassFullUse' => true,
'identifierFieldReturnClassOneWord' => true,
'identifierFieldReturnClassOneLetter' => true,
'identifierFieldReturnClassOneLetterNullable' => true,
];

/**
Expand Down
2 changes: 2 additions & 0 deletions tests/Doctrine/Tests/Common/Proxy/ProxyLogicTypehintsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ public function setUp()
'identifierFieldReturnClassFullUse' => new LazyLoadableObjectWithTypehints(),
'identifierFieldReturnClassOneWord' => new stdClass(),
'identifierFieldReturnClassOneLetter' => new stdClass(),
'identifierFieldReturnClassOneLetterNullable' => new stdClass(),
];

$this->proxyLoader = $loader = $this->getMockBuilder(stdClass::class)->setMethods(['load'])->getMock();
Expand Down Expand Up @@ -151,6 +152,7 @@ public function dataNoLazyLoadingForIdentifier()
['identifierFieldReturnClassFullUse'],
['identifierFieldReturnClassOneWord'],
['identifierFieldReturnClassOneLetter'],
['identifierFieldReturnClassOneLetterNullable'],
];
}

Expand Down

0 comments on commit 5a29148

Please sign in to comment.