Nette Documentation Preview

syntax
Αναστοχασμός PHP
****************

.[perex]
[api:Nette\Utils\Reflection] είναι μια στατική κλάση με χρήσιμες λειτουργίες για την αντανάκλαση της PHP. Σκοπός της είναι να διορθώσει ελαττώματα σε εγγενείς κλάσεις και να ενοποιήσει τη συμπεριφορά σε διαφορετικές εκδόσεις της PHP.


Εγκατάσταση:

```shell
composer require nette/utils
```

Όλα τα παραδείγματα προϋποθέτουν ότι έχει οριστεί το ακόλουθο ψευδώνυμο κλάσης:

```php
use Nette\Utils\Reflection;
```


areCommentsAvailable(): bool .[method]
--------------------------------------

Βρίσκει αν η αντανάκλαση έχει πρόσβαση στα σχόλια του PHPdoc. Τα σχόλια μπορεί να μην είναι διαθέσιμα λόγω της κρυφής μνήμης κώδικα, δείτε για παράδειγμα την οδηγία [opcache.save-comments |https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.save-comments].


expandClassName(string $name, ReflectionClass $context): string .[method]
-------------------------------------------------------------------------

Επεκτείνει το `$name` της κλάσης σε πλήρες όνομα στο πλαίσιο του `$context`, δηλαδή στο πλαίσιο του χώρου ονομάτων της και των καθορισμένων ψευδώνυμα. Έτσι, επιστρέφει το πώς θα καταλάβαινε ο αναλυτής της PHP το `$name` αν ήταν γραμμένο στο σώμα του `$context`.

```php
namespace Foo;
use Bar;

class DemoClass
{
	// new Bar, new Baz
}

$context = new ReflectionClass(Foo\DemoClass::class);
Reflection::expandClassName('Bar', $context); // 'Bar'
Reflection::expandClassName('Baz', $context); // 'Foo\Baz'
```


getMethodDeclaringMethod(ReflectionMethod $method): ReflectionMethod .[method]
------------------------------------------------------------------------------

Επιστρέφει μια αντανάκλαση μιας μεθόδου που περιέχει μια δήλωση του `$method`. Συνήθως, κάθε μέθοδος είναι η δική της δήλωση, αλλά το σώμα της μεθόδου μπορεί επίσης να βρίσκεται στο γνώρισμα και με διαφορετικό όνομα.

Επειδή η PHP δεν παρέχει αρκετές πληροφορίες για τον προσδιορισμό της πραγματικής δήλωσης, η Nette χρησιμοποιεί τις δικές της ευρετικές μεθόδους, οι οποίες **θα πρέπει να είναι** αξιόπιστες.

```php
trait DemoTrait
{
	function foo()
	{
	}
}


class DemoClass
{
	use DemoTrait {
		DemoTrait::foo as foo2;
	}
}


$method = new ReflectionMethod('DemoClass::foo2');
Reflection::getMethodDeclaringMethod($method); // ReflectionMethod('DemoTrait::foo')
```


getPropertyDeclaringClass(ReflectionProperty $prop): ReflectionClass .[method]
------------------------------------------------------------------------------

Επιστρέφει μια αντανάκλαση μιας κλάσης ή ενός γνωρίσματος που περιέχει μια δήλωση της ιδιότητας `$prop`. Η ιδιότητα μπορεί επίσης να δηλωθεί στο trait.

Επειδή η PHP δεν παρέχει αρκετές πληροφορίες για τον προσδιορισμό της πραγματικής δήλωσης, η Nette χρησιμοποιεί τις δικές της ευρετικές μεθόδους, οι οποίες **δεν** είναι αξιόπιστες.

```php
trait DemoTrait
{
	public $foo;
}


class DemoClass
{
	use DemoTrait;
}

$prop = new ReflectionProperty(DemoClass::class, 'foo');
Reflection::getPropertyDeclaringClass($prop); // ReflectionClass('DemoTrait')
```


isBuiltinType(string $type): bool .[method deprecated]
------------------------------------------------------

Καθορίζει αν το `$type` είναι ενσωματωμένος τύπος της PHP. Διαφορετικά, είναι το όνομα της κλάσης.

```php
Reflection::isBuiltinType('string'); // true
Reflection::isBuiltinType('Foo');    // false
```

.[note]
Χρησιμοποιήστε την [Nette\Utils\Validator::isBuiltinType() |validators#isBuiltinType].


toString($reflection): string .[method]
---------------------------------------

Μετατρέπει μια αντανάκλαση σε μια συμβολοσειρά αναγνώσιμη από τον άνθρωπο.

```php
$func = new ReflectionFunction('func');
echo Reflection::toString($func); // 'func()'

$class = new ReflectionClass('DemoClass');
echo Reflection::toString($class); // 'DemoClass'

$method = new ReflectionMethod('DemoClass', 'foo');
echo Reflection::toString($method); // 'DemoClass::foo()'

$param = new ReflectionParameter(['DemoClass', 'foo'], 'param');
echo Reflection::toString($param); // '$param in DemoClass::foo()'

$prop = new ReflectionProperty('DemoClass', 'foo');
echo Reflection::toString($prop); // 'DemoClass::$foo'
```

Αναστοχασμός PHP

Nette\Utils\Reflection είναι μια στατική κλάση με χρήσιμες λειτουργίες για την αντανάκλαση της PHP. Σκοπός της είναι να διορθώσει ελαττώματα σε εγγενείς κλάσεις και να ενοποιήσει τη συμπεριφορά σε διαφορετικές εκδόσεις της PHP.

Εγκατάσταση:

composer require nette/utils

Όλα τα παραδείγματα προϋποθέτουν ότι έχει οριστεί το ακόλουθο ψευδώνυμο κλάσης:

use Nette\Utils\Reflection;

areCommentsAvailable(): bool

Βρίσκει αν η αντανάκλαση έχει πρόσβαση στα σχόλια του PHPdoc. Τα σχόλια μπορεί να μην είναι διαθέσιμα λόγω της κρυφής μνήμης κώδικα, δείτε για παράδειγμα την οδηγία opcache.save-comments.

expandClassName(string $name, ReflectionClass $context)string

Επεκτείνει το $name της κλάσης σε πλήρες όνομα στο πλαίσιο του $context, δηλαδή στο πλαίσιο του χώρου ονομάτων της και των καθορισμένων ψευδώνυμα. Έτσι, επιστρέφει το πώς θα καταλάβαινε ο αναλυτής της PHP το $name αν ήταν γραμμένο στο σώμα του $context.

namespace Foo;
use Bar;

class DemoClass
{
	// new Bar, new Baz
}

$context = new ReflectionClass(Foo\DemoClass::class);
Reflection::expandClassName('Bar', $context); // 'Bar'
Reflection::expandClassName('Baz', $context); // 'Foo\Baz'

getMethodDeclaringMethod(ReflectionMethod $method): ReflectionMethod

Επιστρέφει μια αντανάκλαση μιας μεθόδου που περιέχει μια δήλωση του $method. Συνήθως, κάθε μέθοδος είναι η δική της δήλωση, αλλά το σώμα της μεθόδου μπορεί επίσης να βρίσκεται στο γνώρισμα και με διαφορετικό όνομα.

Επειδή η PHP δεν παρέχει αρκετές πληροφορίες για τον προσδιορισμό της πραγματικής δήλωσης, η Nette χρησιμοποιεί τις δικές της ευρετικές μεθόδους, οι οποίες θα πρέπει να είναι αξιόπιστες.

trait DemoTrait
{
	function foo()
	{
	}
}


class DemoClass
{
	use DemoTrait {
		DemoTrait::foo as foo2;
	}
}


$method = new ReflectionMethod('DemoClass::foo2');
Reflection::getMethodDeclaringMethod($method); // ReflectionMethod('DemoTrait::foo')

getPropertyDeclaringClass(ReflectionProperty $prop): ReflectionClass

Επιστρέφει μια αντανάκλαση μιας κλάσης ή ενός γνωρίσματος που περιέχει μια δήλωση της ιδιότητας $prop. Η ιδιότητα μπορεί επίσης να δηλωθεί στο trait.

Επειδή η PHP δεν παρέχει αρκετές πληροφορίες για τον προσδιορισμό της πραγματικής δήλωσης, η Nette χρησιμοποιεί τις δικές της ευρετικές μεθόδους, οι οποίες δεν είναι αξιόπιστες.

trait DemoTrait
{
	public $foo;
}


class DemoClass
{
	use DemoTrait;
}

$prop = new ReflectionProperty(DemoClass::class, 'foo');
Reflection::getPropertyDeclaringClass($prop); // ReflectionClass('DemoTrait')

isBuiltinType(string $type)bool

Καθορίζει αν το $type είναι ενσωματωμένος τύπος της PHP. Διαφορετικά, είναι το όνομα της κλάσης.

Reflection::isBuiltinType('string'); // true
Reflection::isBuiltinType('Foo');    // false

Χρησιμοποιήστε την Nette\Utils\Validator::isBuiltinType().

toString($reflection): string

Μετατρέπει μια αντανάκλαση σε μια συμβολοσειρά αναγνώσιμη από τον άνθρωπο.

$func = new ReflectionFunction('func');
echo Reflection::toString($func); // 'func()'

$class = new ReflectionClass('DemoClass');
echo Reflection::toString($class); // 'DemoClass'

$method = new ReflectionMethod('DemoClass', 'foo');
echo Reflection::toString($method); // 'DemoClass::foo()'

$param = new ReflectionParameter(['DemoClass', 'foo'], 'param');
echo Reflection::toString($param); // '$param in DemoClass::foo()'

$prop = new ReflectionProperty('DemoClass', 'foo');
echo Reflection::toString($prop); // 'DemoClass::$foo'