Edit report at https://bugs.php.net/bug.php?id=80722&edit=1
ID: 80722
Comment by: fakhar_anwar123 at hotmail dot com
Reported by: fakhar_anwar123 at hotmail dot com
Summary: Missing support for Dependency Inversion Principle
and for serving the purpose
Status: Not a bug
Type: Feature/Change Request
Package: *Extensibility Functions
Operating System: All
PHP Version: 8.0.2
Block user comment: N
Private report: N
New Comment:
Again, i am not looking for a Design Patter, but support for a core Design Principle which all
Object-oriented languages enable through the use of Interface.
I am myself a PHP user, with 15 years experience. I have remained a strong advocator of PHP and PHP
Frameworks. However, it is very disppointing to see the response of a represntative of PHP Community
that instead of promising the support for this very basic and needful feature, you are adopting to
be defensive and asking questions like "How PHP survived". I can provide you a beneiftting
answer to it, please do no understimate me.
The question today is "Why other technologies like NodeJS and Go dented the market of PHP in
past few years", but i do not want to go into that detail.
Please, tell me when Interface variables are not supported ? When PHP will start adhering to the
CORE PRINCIPLES (not design patterns) of Software Engineering?
A) Dependency Inversion Principle
B) (purpose behind) Interface Segregation Principle
Previous Comments:
------------------------------------------------------------------------
[2021-02-07 11:53:11] requinix@php.net
Once again, PHP is perfectly capable of whatever design patterns you like, but expecting PHP to
support the same syntax you've seen in other languages will not work.
------------------------------------------------------------------------
[2021-02-07 11:50:19] rtrtrtrtrt at dfdfdfdf dot dfd35
> as it is a key feature of Object-oriented Design / Programming
i wonder how we surivived the past 20 years
------------------------------------------------------------------------
[2021-02-07 11:47:11] fakhar_anwar123 at hotmail dot com
I put up this issue not as "Bug" but as a key feature (as it is a key feature of
Object-oriented Design / Programming).
So, we conclude that PHP upto its latest version 8.02 does not comply with the core Principles of
Software Engineering (or, their actual purpose), namely
A) Dependency Inversion Principle DIP), and
B) Interface Segregation Principle (ISP).
------------------------------------------------------------------------
[2021-02-07 11:38:43] rtrtrtrtrt at dfdfdfdf dot dfd35
> PHP8.0 must allow declaration of.....
no, an already released version MUST NOT allow or change anything in behavior which wasn't a
bug
------------------------------------------------------------------------
[2021-02-07 11:36:05] fakhar_anwar123 at hotmail dot com
The "Interface Segregation Principle (ISP)" is to about ability to break-down larger
interface into smaller interfaces, its purpose is to expose, to the Consumers, different subsets of
the (functions) of a Serving-entity (Class), in the form of small Packages / Deals (aka Interfaces)
(...while hiding the Mechanism; details of how those Services are produced, internally, by the
Serving-entity)
Consumers (Client-side code) can then consume needed subset/s of services (of the Serving Entity;
Class) in the form of Packages / Deals (Interfaces).
Benefit / Purpose:
The Serving-end can extend services of a Package (Interface), if needed, without effecting other
Packages (Interfaces) which means without effecting the Consumers consuming those Packages
(Interfaces).
This is a powerful technique for extending the offerings with flexibility.
Example:
See P-15 and P-13 on the link below to understand the purpose of Interface Segregation Principle in
OOD/OOP.
https://www.codeproject.com/Articles/18743/Interfaces-in-C-For-Beginners
PHP8.0 must allow declaration of Interface variables to conform to the core priniples of development
like Interface Segregation Principle (ISP) and Dependency Inversion Principle (DIP).
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=80722
--
Edit this bug report at https://bugs.php.net/bug.php?id=80722&edit=1