Difference between $bundle and bundle()krumo()/dpm() not workingEntityMalformedException in custom module. Can anyone see what I did wrong?Difference between a bundle and a content typeWhat is the order of return value for field_info_instances?Fixing bad node that makes search not index, but completes cronHow to add css class to a field from a select list before rendering?Programmatically get field values of fields added to custom entityWhy won't custom field property values save if they are in a fieldset?Custom form to modify only some fields of an EntityForm
Smallest number containing the first 11 primes as sub-strings
Shorten leader-line for labels with geometry-generator
お仕事に学校頑張って meaning
Is population size a parameter, or sample size a statistic?
Why, even after his imprisonment, people keep calling Hannibal Lecter "Doctor"?
Why does my browser attempt to download pages from http://clhs.lisp.se instead of viewing them normally?
Fix Ethernet 10/100 PoE cable with 7 out of 8 wires alive
What makes learning more difficult as we age?
I reverse the source code, you reverse the input!
ZFS inside a virtual machine
Is determiner 'a' needed here?
"I will not" or "I don't" as an answer for negative orders?
String whitespaces
Do interval ratios take overtones into account or solely the fundamental frequency?
Top off gas with old oil, is that bad?
What's the use case of commercial optimizer when we have Tensorflow?
Why would an airline put 15 passengers at once on standby?
Garage door sticks on a bolt
Gave from hunger: Imperfect past tense of "feed"?
What's the hidden joke/meaning behind "Don't drink and park - accidents cause people"?
Reorder a matrix, twice
Why does Captain Marvel in the MCU not have her sash?
Is there a concept of "peer review" in Rabbinical Judaism?
End a command question
Difference between $bundle and bundle()
krumo()/dpm() not workingEntityMalformedException in custom module. Can anyone see what I did wrong?Difference between a bundle and a content typeWhat is the order of return value for field_info_instances?Fixing bad node that makes search not index, but completes cronHow to add css class to a field from a select list before rendering?Programmatically get field values of fields added to custom entityWhy won't custom field property values save if they are in a fieldset?Custom form to modify only some fields of an EntityForm
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
Background information: I'm trying to manipulate the available options of a list type text field, depending on the host bundle:
function wtbase_options_list_alter(array &$options, array $context)
$fieldDefinition = $context['fieldDefinition'];
if ($fieldDefinition->getName() == 'field_aos_cell' && $fieldDefinition->bundle() != 'link')
foreach ($options as $key => $value)
if ($key == 'link-horizontally-opposing')
unset($options[$key]);
The $fieldDefinition->bundle
part is really confusing. There seems to be a variable $fieldDefinition->bundle
(containing the expected bundle name link
) and a function $fieldDefinition->bundle()
(containing field_config
). But I can't access the variable bundle
, because this crashed with Cannot access protected property DrupalfieldEntityFieldConfig::$bundle
.
After some digging I found FieldConfigBase::getTargetBundle(), which did return the expected result and did not crash (yet).
So this leads to two questions:
What is the difference between $bundle
, bundle()
and getTargetBundle()
and which one I'm supposed to use? I'd prefer using variables, because they are visible in Xdebug, while functions are not.
And in a more general point of view, are there some guidelines when to use functions and when to use variables? In the same example as above Xdebug printed the same weird results for e.g. entity_type
vs entityTypeId
vs getEntityType()
vs getEntityTypeId()
.
--
Update, clarification for question 1:
I know the technical difference between a member property and a member function. But I'm deeply confused that a property $bundle
and a function bundle()
of the exact same name are returning values from a completely different entities/context. In my example $fieldDefinition->bundle
returns a Paragraph bundle name link
, while $fieldDefinition->bundle()
seems to return the bundle name from FieldConfig. I know this is technically possible... but why would anyone write code like this? I've not yet experienced this behavior anywhere else in Drupal core, usually $entity->bundle
and $entity->bundle()
return the same result.
entities debugging
add a comment
|
Background information: I'm trying to manipulate the available options of a list type text field, depending on the host bundle:
function wtbase_options_list_alter(array &$options, array $context)
$fieldDefinition = $context['fieldDefinition'];
if ($fieldDefinition->getName() == 'field_aos_cell' && $fieldDefinition->bundle() != 'link')
foreach ($options as $key => $value)
if ($key == 'link-horizontally-opposing')
unset($options[$key]);
The $fieldDefinition->bundle
part is really confusing. There seems to be a variable $fieldDefinition->bundle
(containing the expected bundle name link
) and a function $fieldDefinition->bundle()
(containing field_config
). But I can't access the variable bundle
, because this crashed with Cannot access protected property DrupalfieldEntityFieldConfig::$bundle
.
After some digging I found FieldConfigBase::getTargetBundle(), which did return the expected result and did not crash (yet).
So this leads to two questions:
What is the difference between $bundle
, bundle()
and getTargetBundle()
and which one I'm supposed to use? I'd prefer using variables, because they are visible in Xdebug, while functions are not.
And in a more general point of view, are there some guidelines when to use functions and when to use variables? In the same example as above Xdebug printed the same weird results for e.g. entity_type
vs entityTypeId
vs getEntityType()
vs getEntityTypeId()
.
--
Update, clarification for question 1:
I know the technical difference between a member property and a member function. But I'm deeply confused that a property $bundle
and a function bundle()
of the exact same name are returning values from a completely different entities/context. In my example $fieldDefinition->bundle
returns a Paragraph bundle name link
, while $fieldDefinition->bundle()
seems to return the bundle name from FieldConfig. I know this is technically possible... but why would anyone write code like this? I've not yet experienced this behavior anywhere else in Drupal core, usually $entity->bundle
and $entity->bundle()
return the same result.
entities debugging
add a comment
|
Background information: I'm trying to manipulate the available options of a list type text field, depending on the host bundle:
function wtbase_options_list_alter(array &$options, array $context)
$fieldDefinition = $context['fieldDefinition'];
if ($fieldDefinition->getName() == 'field_aos_cell' && $fieldDefinition->bundle() != 'link')
foreach ($options as $key => $value)
if ($key == 'link-horizontally-opposing')
unset($options[$key]);
The $fieldDefinition->bundle
part is really confusing. There seems to be a variable $fieldDefinition->bundle
(containing the expected bundle name link
) and a function $fieldDefinition->bundle()
(containing field_config
). But I can't access the variable bundle
, because this crashed with Cannot access protected property DrupalfieldEntityFieldConfig::$bundle
.
After some digging I found FieldConfigBase::getTargetBundle(), which did return the expected result and did not crash (yet).
So this leads to two questions:
What is the difference between $bundle
, bundle()
and getTargetBundle()
and which one I'm supposed to use? I'd prefer using variables, because they are visible in Xdebug, while functions are not.
And in a more general point of view, are there some guidelines when to use functions and when to use variables? In the same example as above Xdebug printed the same weird results for e.g. entity_type
vs entityTypeId
vs getEntityType()
vs getEntityTypeId()
.
--
Update, clarification for question 1:
I know the technical difference between a member property and a member function. But I'm deeply confused that a property $bundle
and a function bundle()
of the exact same name are returning values from a completely different entities/context. In my example $fieldDefinition->bundle
returns a Paragraph bundle name link
, while $fieldDefinition->bundle()
seems to return the bundle name from FieldConfig. I know this is technically possible... but why would anyone write code like this? I've not yet experienced this behavior anywhere else in Drupal core, usually $entity->bundle
and $entity->bundle()
return the same result.
entities debugging
Background information: I'm trying to manipulate the available options of a list type text field, depending on the host bundle:
function wtbase_options_list_alter(array &$options, array $context)
$fieldDefinition = $context['fieldDefinition'];
if ($fieldDefinition->getName() == 'field_aos_cell' && $fieldDefinition->bundle() != 'link')
foreach ($options as $key => $value)
if ($key == 'link-horizontally-opposing')
unset($options[$key]);
The $fieldDefinition->bundle
part is really confusing. There seems to be a variable $fieldDefinition->bundle
(containing the expected bundle name link
) and a function $fieldDefinition->bundle()
(containing field_config
). But I can't access the variable bundle
, because this crashed with Cannot access protected property DrupalfieldEntityFieldConfig::$bundle
.
After some digging I found FieldConfigBase::getTargetBundle(), which did return the expected result and did not crash (yet).
So this leads to two questions:
What is the difference between $bundle
, bundle()
and getTargetBundle()
and which one I'm supposed to use? I'd prefer using variables, because they are visible in Xdebug, while functions are not.
And in a more general point of view, are there some guidelines when to use functions and when to use variables? In the same example as above Xdebug printed the same weird results for e.g. entity_type
vs entityTypeId
vs getEntityType()
vs getEntityTypeId()
.
--
Update, clarification for question 1:
I know the technical difference between a member property and a member function. But I'm deeply confused that a property $bundle
and a function bundle()
of the exact same name are returning values from a completely different entities/context. In my example $fieldDefinition->bundle
returns a Paragraph bundle name link
, while $fieldDefinition->bundle()
seems to return the bundle name from FieldConfig. I know this is technically possible... but why would anyone write code like this? I've not yet experienced this behavior anywhere else in Drupal core, usually $entity->bundle
and $entity->bundle()
return the same result.
entities debugging
entities debugging
edited 8 hours ago
Hudri
asked 8 hours ago
HudriHudri
2,5471 gold badge7 silver badges25 bronze badges
2,5471 gold badge7 silver badges25 bronze badges
add a comment
|
add a comment
|
1 Answer
1
active
oldest
votes
bundle
is the property on the object. It's where the value is stored. Properties can be assigned one of three ways:
public
: these properties can be directly set or read on the object. Example:$object->key = 'value';
$value = $object->key;private
: These can only be accessed by methods (functions) of the class itself. Nothing else can access it. For example, this will throw an error:$value = $object->key;
Whereas this would be allowed:
class Example
private $key;
function getPrivateValue()
return $this->key;
$value = $object->getPrivateValue();$key
cannot be accessed outside of the class, since it is private. This can be used to enforce rules on the types of data to be stored in the property. Checks can be run to ensure it's an allowed data type.protected
: These are like private properties, however if a class extends the class, the extended class can access the property. If the property is private, extended classes cannot access it.
One thing for you to understand is that $node->bundle
and $node->bundle()
are not the same things. The first is a property, the other is a method. This should help understand, as a (non-real) example:
class Node
protected $bundle;
public function bundle()
return $this->bundle;
The above class has the property $bundle
, and the method (function) bundle()
. The method returns the value stored in the property.
Look at the error you are seeing: Cannot access protected property DrupalfieldEntityFieldConfig::$bundle
. This is because you are trying to access the $bundle
property, but it is protected, meaning you cannot access it from outside the class.
To get the bundle of a node, you need to call the bundle()
method on it, which will give you the bundle type. This is the answer to your question about which to use.
And in a more general point of view, are there some guidelines when to use functions and when to use variables?
It's generally thought to be a best practice to not provide direct access to properties on objects, and instead create setter and getter methods (functions) on objects to set and retrieve the property values. That way you can say, enforce a pattern:
class Example
protected $username
public function setUsername($username)
if (!is_string($username))
throw new Exception('Username must be a string');
elseif (!preg_match('/^[a-zA-Z0-9_-]3,12$/', $username))
throw new Exception('Username must be between 3 and 12 characters, and may contain only alphanumerics, underscores or hyphens');
$this->username = $username;
public function getUsername()
return $this->username;
The above enforces that username is both a string, and is the right length and only contains allowed characters.
Edit: Additional comment from Leigh:
another reason to avoid accessing the property directly is when you have multiple values. e.g. if you have a field "my_field" on a node which has multiple values if you use $node->my_field->value you'll only get 1 value returned
1
Also just to add to this, another reason to avoid accessing the property directly is when you have multiple values. e.g. if you have a field "my_field" on a node which has multiple values if you use $node->my_field->value you'll only get 1 value returned
– Leigh
8 hours ago
Good point. I'll add it to my post.
– Jaypan
8 hours ago
I got the basic, technical difference between a member property and a member function... but why would anyone write code that returns semantically different things for those two? In my example abovelink
is from Paragraphs, whilefield_config
is from FieldConfig.
– Hudri
8 hours ago
bundle()
will return a string containing the bundle name. Your original post doesn't really make sense in that regard. If it is returning anything other than a string containing the bundle name, you've either misdiagnosed the issue, or you've got a broken system, and some module/theme is doing wonky stuff breaking core functionality.
– Jaypan
8 hours ago
I believe they're provided by different classes, getTargetBundle() from the Field class and bundle() from the Entity class. You see both because the fields/configs are effectively entities. Which I'd say is why you see overlapping functions/data
– Leigh
8 hours ago
|
show 1 more comment
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "220"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdrupal.stackexchange.com%2fquestions%2f286641%2fdifference-between-bundle-and-bundle%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
bundle
is the property on the object. It's where the value is stored. Properties can be assigned one of three ways:
public
: these properties can be directly set or read on the object. Example:$object->key = 'value';
$value = $object->key;private
: These can only be accessed by methods (functions) of the class itself. Nothing else can access it. For example, this will throw an error:$value = $object->key;
Whereas this would be allowed:
class Example
private $key;
function getPrivateValue()
return $this->key;
$value = $object->getPrivateValue();$key
cannot be accessed outside of the class, since it is private. This can be used to enforce rules on the types of data to be stored in the property. Checks can be run to ensure it's an allowed data type.protected
: These are like private properties, however if a class extends the class, the extended class can access the property. If the property is private, extended classes cannot access it.
One thing for you to understand is that $node->bundle
and $node->bundle()
are not the same things. The first is a property, the other is a method. This should help understand, as a (non-real) example:
class Node
protected $bundle;
public function bundle()
return $this->bundle;
The above class has the property $bundle
, and the method (function) bundle()
. The method returns the value stored in the property.
Look at the error you are seeing: Cannot access protected property DrupalfieldEntityFieldConfig::$bundle
. This is because you are trying to access the $bundle
property, but it is protected, meaning you cannot access it from outside the class.
To get the bundle of a node, you need to call the bundle()
method on it, which will give you the bundle type. This is the answer to your question about which to use.
And in a more general point of view, are there some guidelines when to use functions and when to use variables?
It's generally thought to be a best practice to not provide direct access to properties on objects, and instead create setter and getter methods (functions) on objects to set and retrieve the property values. That way you can say, enforce a pattern:
class Example
protected $username
public function setUsername($username)
if (!is_string($username))
throw new Exception('Username must be a string');
elseif (!preg_match('/^[a-zA-Z0-9_-]3,12$/', $username))
throw new Exception('Username must be between 3 and 12 characters, and may contain only alphanumerics, underscores or hyphens');
$this->username = $username;
public function getUsername()
return $this->username;
The above enforces that username is both a string, and is the right length and only contains allowed characters.
Edit: Additional comment from Leigh:
another reason to avoid accessing the property directly is when you have multiple values. e.g. if you have a field "my_field" on a node which has multiple values if you use $node->my_field->value you'll only get 1 value returned
1
Also just to add to this, another reason to avoid accessing the property directly is when you have multiple values. e.g. if you have a field "my_field" on a node which has multiple values if you use $node->my_field->value you'll only get 1 value returned
– Leigh
8 hours ago
Good point. I'll add it to my post.
– Jaypan
8 hours ago
I got the basic, technical difference between a member property and a member function... but why would anyone write code that returns semantically different things for those two? In my example abovelink
is from Paragraphs, whilefield_config
is from FieldConfig.
– Hudri
8 hours ago
bundle()
will return a string containing the bundle name. Your original post doesn't really make sense in that regard. If it is returning anything other than a string containing the bundle name, you've either misdiagnosed the issue, or you've got a broken system, and some module/theme is doing wonky stuff breaking core functionality.
– Jaypan
8 hours ago
I believe they're provided by different classes, getTargetBundle() from the Field class and bundle() from the Entity class. You see both because the fields/configs are effectively entities. Which I'd say is why you see overlapping functions/data
– Leigh
8 hours ago
|
show 1 more comment
bundle
is the property on the object. It's where the value is stored. Properties can be assigned one of three ways:
public
: these properties can be directly set or read on the object. Example:$object->key = 'value';
$value = $object->key;private
: These can only be accessed by methods (functions) of the class itself. Nothing else can access it. For example, this will throw an error:$value = $object->key;
Whereas this would be allowed:
class Example
private $key;
function getPrivateValue()
return $this->key;
$value = $object->getPrivateValue();$key
cannot be accessed outside of the class, since it is private. This can be used to enforce rules on the types of data to be stored in the property. Checks can be run to ensure it's an allowed data type.protected
: These are like private properties, however if a class extends the class, the extended class can access the property. If the property is private, extended classes cannot access it.
One thing for you to understand is that $node->bundle
and $node->bundle()
are not the same things. The first is a property, the other is a method. This should help understand, as a (non-real) example:
class Node
protected $bundle;
public function bundle()
return $this->bundle;
The above class has the property $bundle
, and the method (function) bundle()
. The method returns the value stored in the property.
Look at the error you are seeing: Cannot access protected property DrupalfieldEntityFieldConfig::$bundle
. This is because you are trying to access the $bundle
property, but it is protected, meaning you cannot access it from outside the class.
To get the bundle of a node, you need to call the bundle()
method on it, which will give you the bundle type. This is the answer to your question about which to use.
And in a more general point of view, are there some guidelines when to use functions and when to use variables?
It's generally thought to be a best practice to not provide direct access to properties on objects, and instead create setter and getter methods (functions) on objects to set and retrieve the property values. That way you can say, enforce a pattern:
class Example
protected $username
public function setUsername($username)
if (!is_string($username))
throw new Exception('Username must be a string');
elseif (!preg_match('/^[a-zA-Z0-9_-]3,12$/', $username))
throw new Exception('Username must be between 3 and 12 characters, and may contain only alphanumerics, underscores or hyphens');
$this->username = $username;
public function getUsername()
return $this->username;
The above enforces that username is both a string, and is the right length and only contains allowed characters.
Edit: Additional comment from Leigh:
another reason to avoid accessing the property directly is when you have multiple values. e.g. if you have a field "my_field" on a node which has multiple values if you use $node->my_field->value you'll only get 1 value returned
1
Also just to add to this, another reason to avoid accessing the property directly is when you have multiple values. e.g. if you have a field "my_field" on a node which has multiple values if you use $node->my_field->value you'll only get 1 value returned
– Leigh
8 hours ago
Good point. I'll add it to my post.
– Jaypan
8 hours ago
I got the basic, technical difference between a member property and a member function... but why would anyone write code that returns semantically different things for those two? In my example abovelink
is from Paragraphs, whilefield_config
is from FieldConfig.
– Hudri
8 hours ago
bundle()
will return a string containing the bundle name. Your original post doesn't really make sense in that regard. If it is returning anything other than a string containing the bundle name, you've either misdiagnosed the issue, or you've got a broken system, and some module/theme is doing wonky stuff breaking core functionality.
– Jaypan
8 hours ago
I believe they're provided by different classes, getTargetBundle() from the Field class and bundle() from the Entity class. You see both because the fields/configs are effectively entities. Which I'd say is why you see overlapping functions/data
– Leigh
8 hours ago
|
show 1 more comment
bundle
is the property on the object. It's where the value is stored. Properties can be assigned one of three ways:
public
: these properties can be directly set or read on the object. Example:$object->key = 'value';
$value = $object->key;private
: These can only be accessed by methods (functions) of the class itself. Nothing else can access it. For example, this will throw an error:$value = $object->key;
Whereas this would be allowed:
class Example
private $key;
function getPrivateValue()
return $this->key;
$value = $object->getPrivateValue();$key
cannot be accessed outside of the class, since it is private. This can be used to enforce rules on the types of data to be stored in the property. Checks can be run to ensure it's an allowed data type.protected
: These are like private properties, however if a class extends the class, the extended class can access the property. If the property is private, extended classes cannot access it.
One thing for you to understand is that $node->bundle
and $node->bundle()
are not the same things. The first is a property, the other is a method. This should help understand, as a (non-real) example:
class Node
protected $bundle;
public function bundle()
return $this->bundle;
The above class has the property $bundle
, and the method (function) bundle()
. The method returns the value stored in the property.
Look at the error you are seeing: Cannot access protected property DrupalfieldEntityFieldConfig::$bundle
. This is because you are trying to access the $bundle
property, but it is protected, meaning you cannot access it from outside the class.
To get the bundle of a node, you need to call the bundle()
method on it, which will give you the bundle type. This is the answer to your question about which to use.
And in a more general point of view, are there some guidelines when to use functions and when to use variables?
It's generally thought to be a best practice to not provide direct access to properties on objects, and instead create setter and getter methods (functions) on objects to set and retrieve the property values. That way you can say, enforce a pattern:
class Example
protected $username
public function setUsername($username)
if (!is_string($username))
throw new Exception('Username must be a string');
elseif (!preg_match('/^[a-zA-Z0-9_-]3,12$/', $username))
throw new Exception('Username must be between 3 and 12 characters, and may contain only alphanumerics, underscores or hyphens');
$this->username = $username;
public function getUsername()
return $this->username;
The above enforces that username is both a string, and is the right length and only contains allowed characters.
Edit: Additional comment from Leigh:
another reason to avoid accessing the property directly is when you have multiple values. e.g. if you have a field "my_field" on a node which has multiple values if you use $node->my_field->value you'll only get 1 value returned
bundle
is the property on the object. It's where the value is stored. Properties can be assigned one of three ways:
public
: these properties can be directly set or read on the object. Example:$object->key = 'value';
$value = $object->key;private
: These can only be accessed by methods (functions) of the class itself. Nothing else can access it. For example, this will throw an error:$value = $object->key;
Whereas this would be allowed:
class Example
private $key;
function getPrivateValue()
return $this->key;
$value = $object->getPrivateValue();$key
cannot be accessed outside of the class, since it is private. This can be used to enforce rules on the types of data to be stored in the property. Checks can be run to ensure it's an allowed data type.protected
: These are like private properties, however if a class extends the class, the extended class can access the property. If the property is private, extended classes cannot access it.
One thing for you to understand is that $node->bundle
and $node->bundle()
are not the same things. The first is a property, the other is a method. This should help understand, as a (non-real) example:
class Node
protected $bundle;
public function bundle()
return $this->bundle;
The above class has the property $bundle
, and the method (function) bundle()
. The method returns the value stored in the property.
Look at the error you are seeing: Cannot access protected property DrupalfieldEntityFieldConfig::$bundle
. This is because you are trying to access the $bundle
property, but it is protected, meaning you cannot access it from outside the class.
To get the bundle of a node, you need to call the bundle()
method on it, which will give you the bundle type. This is the answer to your question about which to use.
And in a more general point of view, are there some guidelines when to use functions and when to use variables?
It's generally thought to be a best practice to not provide direct access to properties on objects, and instead create setter and getter methods (functions) on objects to set and retrieve the property values. That way you can say, enforce a pattern:
class Example
protected $username
public function setUsername($username)
if (!is_string($username))
throw new Exception('Username must be a string');
elseif (!preg_match('/^[a-zA-Z0-9_-]3,12$/', $username))
throw new Exception('Username must be between 3 and 12 characters, and may contain only alphanumerics, underscores or hyphens');
$this->username = $username;
public function getUsername()
return $this->username;
The above enforces that username is both a string, and is the right length and only contains allowed characters.
Edit: Additional comment from Leigh:
another reason to avoid accessing the property directly is when you have multiple values. e.g. if you have a field "my_field" on a node which has multiple values if you use $node->my_field->value you'll only get 1 value returned
edited 8 hours ago
answered 8 hours ago


JaypanJaypan
8,9071 gold badge11 silver badges35 bronze badges
8,9071 gold badge11 silver badges35 bronze badges
1
Also just to add to this, another reason to avoid accessing the property directly is when you have multiple values. e.g. if you have a field "my_field" on a node which has multiple values if you use $node->my_field->value you'll only get 1 value returned
– Leigh
8 hours ago
Good point. I'll add it to my post.
– Jaypan
8 hours ago
I got the basic, technical difference between a member property and a member function... but why would anyone write code that returns semantically different things for those two? In my example abovelink
is from Paragraphs, whilefield_config
is from FieldConfig.
– Hudri
8 hours ago
bundle()
will return a string containing the bundle name. Your original post doesn't really make sense in that regard. If it is returning anything other than a string containing the bundle name, you've either misdiagnosed the issue, or you've got a broken system, and some module/theme is doing wonky stuff breaking core functionality.
– Jaypan
8 hours ago
I believe they're provided by different classes, getTargetBundle() from the Field class and bundle() from the Entity class. You see both because the fields/configs are effectively entities. Which I'd say is why you see overlapping functions/data
– Leigh
8 hours ago
|
show 1 more comment
1
Also just to add to this, another reason to avoid accessing the property directly is when you have multiple values. e.g. if you have a field "my_field" on a node which has multiple values if you use $node->my_field->value you'll only get 1 value returned
– Leigh
8 hours ago
Good point. I'll add it to my post.
– Jaypan
8 hours ago
I got the basic, technical difference between a member property and a member function... but why would anyone write code that returns semantically different things for those two? In my example abovelink
is from Paragraphs, whilefield_config
is from FieldConfig.
– Hudri
8 hours ago
bundle()
will return a string containing the bundle name. Your original post doesn't really make sense in that regard. If it is returning anything other than a string containing the bundle name, you've either misdiagnosed the issue, or you've got a broken system, and some module/theme is doing wonky stuff breaking core functionality.
– Jaypan
8 hours ago
I believe they're provided by different classes, getTargetBundle() from the Field class and bundle() from the Entity class. You see both because the fields/configs are effectively entities. Which I'd say is why you see overlapping functions/data
– Leigh
8 hours ago
1
1
Also just to add to this, another reason to avoid accessing the property directly is when you have multiple values. e.g. if you have a field "my_field" on a node which has multiple values if you use $node->my_field->value you'll only get 1 value returned
– Leigh
8 hours ago
Also just to add to this, another reason to avoid accessing the property directly is when you have multiple values. e.g. if you have a field "my_field" on a node which has multiple values if you use $node->my_field->value you'll only get 1 value returned
– Leigh
8 hours ago
Good point. I'll add it to my post.
– Jaypan
8 hours ago
Good point. I'll add it to my post.
– Jaypan
8 hours ago
I got the basic, technical difference between a member property and a member function... but why would anyone write code that returns semantically different things for those two? In my example above
link
is from Paragraphs, while field_config
is from FieldConfig.– Hudri
8 hours ago
I got the basic, technical difference between a member property and a member function... but why would anyone write code that returns semantically different things for those two? In my example above
link
is from Paragraphs, while field_config
is from FieldConfig.– Hudri
8 hours ago
bundle()
will return a string containing the bundle name. Your original post doesn't really make sense in that regard. If it is returning anything other than a string containing the bundle name, you've either misdiagnosed the issue, or you've got a broken system, and some module/theme is doing wonky stuff breaking core functionality.– Jaypan
8 hours ago
bundle()
will return a string containing the bundle name. Your original post doesn't really make sense in that regard. If it is returning anything other than a string containing the bundle name, you've either misdiagnosed the issue, or you've got a broken system, and some module/theme is doing wonky stuff breaking core functionality.– Jaypan
8 hours ago
I believe they're provided by different classes, getTargetBundle() from the Field class and bundle() from the Entity class. You see both because the fields/configs are effectively entities. Which I'd say is why you see overlapping functions/data
– Leigh
8 hours ago
I believe they're provided by different classes, getTargetBundle() from the Field class and bundle() from the Entity class. You see both because the fields/configs are effectively entities. Which I'd say is why you see overlapping functions/data
– Leigh
8 hours ago
|
show 1 more comment
Thanks for contributing an answer to Drupal Answers!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdrupal.stackexchange.com%2fquestions%2f286641%2fdifference-between-bundle-and-bundle%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown