Comments (2)
I tried it out to be sure I wasn't missing an inadequacy of LSB in php5.3. It seems to work fine for me...
<?php
class Foo {
protected static $foo = null;
public static function getFoo() {
return static::$foo;
}
}
class Bar extends Foo {
protected static $foo = 'wah';
}
var_dump(Foo::getFoo());
var_dump(Bar::getFoo());
Output is:
phil@server1:~$ php statictest.php
NULL
string(3) "wah"
from orm.
The problem is as follows: when the parent class has the property but the child class doesn't the parent class's property is used.
Then let's say we have the base Orm\Model and these 2 classes:
<?php
class Orm\Model {
protected static $foo = 0;
}
class Foo extends Orm\Model {
public static function getFoo() {
return static::$foo;
}
}
class Bar extends Orm\Model {
public static function getFoo() {
static::$foo++;
return static::$foo;
}
}
Note that these are 2 extension classes for the same base model which has the property, while neither of the child classes has the property.
Foo::getFoo(); // 0
Foo::getFoo(); // 0
Bar::getFoo(); // 1
Bar::getFoo(); // 2
// And now for the big surprise
Foo::getFoo(); // 2
Thus by making the property part of the parent class you MUST extend it or its meaning will be ambiguous. Which is why the solution is used.
[edit] And by the way, not meant to insult you: your use of "OO" is pretty strange to say it kindly. OO isn't a single way of doing things and when talking about static property one might even argue there's nothing OO about it. When you want to argue something don't use the term OO as a magic stick, it's not it has no meaning when used like this. Argue why you think something is good or bad and don't use a term you apparently only half understand and has no meaning in the context in which you use it. (what you meant to say is "inheritance", which of course is part of any OO design but is like using the word fruit when talking about apples)
Last but not least: questions belong on the forums, not the issue tracker.
from orm.
Related Issues (20)
- Model_Temporal: Multiple functions don't work when primary key is changed from 'id' HOT 1
- Error since last commit HOT 3
- Enhancement: table views in related models
- Orm remembers which fields were selected previously when it shouldn't HOT 9
- php 7.4 bag HOT 11
- [Bug report]I will report this bug in fuelPHP forum HOT 3
- help pls count relation HOT 1
- 1.9/dev - Relation condition use query's where instead of relation's on clause HOT 12
- relations multiple empty bug HOT 18
- Many to Many Relationships HOT 2
- creating new relation models, which should be same, with ->from_cache(false) HOT 3
- The solution for Issue #432 seems to be wrong. HOT 1
- Run Typing on default value if value is null HOT 1
- [ORM bug dev-1.9]Orm fetches wrong data when I use multiple related. HOT 7
- Cannot delete relations HOT 2
- Related conditions are applied to incorrect place in the query HOT 3
- Second-degree relations not being eager-loaded HOT 6
- Eager-loaded relations are not cached when null
- Making classes overloadable
- Does FuelPHP ORM suffer of the problem of useless order by on some ORM prefetches ? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from orm.