Skip to content

Commit

Permalink
DOC Do not use self
Browse files Browse the repository at this point in the history
  • Loading branch information
emteknetnz committed Jun 14, 2024
1 parent 0e3245c commit 42aa689
Showing 1 changed file with 4 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -172,3 +172,7 @@ PHPDocs are not only useful when looking at the source code, but are also used i
- Prefer the identical `===` operator over the equality `==` operator for comparisons.
- If you directly reference a third-party dependency in code, then ensure the dependency is required in the module's `composer.json` file.
- Avoid hardcoding values when there is a method available to dynamically get a value, for example use [`DataObjectSchema::tableName()`](api:SilverStripe\ORM\DataObjectSchema::tableName()) to get the table name for a `DataObject` model rather than hard coding it.
- Do not use the `self` keyword, e.g. `self::myMethod()` instead use the short-name of the current class e.g. `MyClass::myMethod()` which is functionally equivalent. This avoids a specific class of bug that is introduced when using late static binding downstream from `self`.
- The one exception to this rule is traits as there is no way to know the class the trait is applied to.
- The use of `static` keyword is perfectly OK and is often appropriate.
- You should probably not use `MyClass::config()` and instead use `static::config()` as that will read any overriden config from subclasses. `self::config()` somewhat unintuitively behaves like `static::config()` and should not be used.

0 comments on commit 42aa689

Please sign in to comment.