Vorrei discutere perché PHP è chiamato linguaggio strutturale? quali sono i concetti OO che non possono essere implementati usando PHP?
Vorrei discutere perché PHP è chiamato linguaggio strutturale? quali sono i concetti OO che non possono essere implementati usando PHP?
Considero il linguaggio PHP compatibile con gli oggetti, non orientato agli oggetti. Questo perché la maggior parte dei costrutti built-in non sono orientati agli oggetti. Prendi un array o una stringa per esempio. Nel linguaggio orientato agli oggetti, dovresti usare i suoi metodi per manipolarlo. In un linguaggio completamente orientato agli oggetti tutto è un oggetto.
D'altra parte PHP è abilitato agli oggetti, puoi scrivere codice, che sarà OOP. Invece di utilizzare, ad esempio, gli array normali, puoi utilizzare le strutture dati da SPL , che in realtà sono OOP . L'unico problema è che è un'estensione, non una parte del linguaggio stesso.
La classificazione dei linguaggi di programmazione è un'arte in quanto la maggior parte delle lingue rientra in molte categorie. In questo caso è abbastanza semplice però. PHP è un linguaggio OO imperativo, come il C ++. Cioè, puoi scegliere di usare oggetti e classi se vuoi, ma non devi.
Per quanto riguarda ciò che puoi e non puoi fare con gli oggetti in PHP, non vedo davvero nulla di mancante. Ma "mancante" è un termine relativo qui, in quanto alcune lingue OO hanno più funzioni e altre meno. Ad esempio, alcuni considerano le proprietà supportate dalla lingua come un segno distintivo di OO, cosa che manca sia in Java che in PHP. Ancora Java è senza dubbio nel campo OO.
A giudicare da Wikipedia , i concetti fondamentali in OO sono:
Tutto questo fa parte di PHP.
Su una nota personale, non ho trovato nulla nell'implementazione OO di PHP che manca. C'è molto materiale in PHP che è seriamente imperfetto, incoerente e solo strano, ma questo è un altro problema. I costrutti OO sono abbastanza buoni da essere definiti completi.
Ho scritto un articolo che potrebbe aiutare a chiarire questo problema!
There is a big dilemma and misunderstanding between programmers regarding the object orientation of PHP. I have read a lot of forums and books on this subject, and I’d like to clarify it once and for all.
Before actually providing my opinion, let me be really clear in something; I like PHP, I am PHP Certified, and I use it every day for Optimum7, a pretty innovative company that I work for as Senior Programmer, and if this would help… “I always program in php thinking in objects”. I can’t do it differently after programming for more than 9 years in C#.Net, where “everything is an object”. But once again, PHP is not Object Oriented!
Let’s make an analogy to clarify this. We can all run, right? But, we are not all “made” for running. The fact that we have the ability to run does not mean we are made for that specific action. Carl Lewis (the fastest runner in his day) was made to run from the beginning; he trained for it; he sacrificed everything to achieve at the highest level. We all know him as “the runner”. He was made for it and he developed it to the max! What about Technical Considerations?
It is said that in order for a programming language to be Object Oriented, it needs to support at least these three basic concepts: Encapsulation, Inheritance and Polymorphism. However, PHP doesn’t exactly contain a ‘full’ complement of these three things, so these words don’t exactly apply to PHP like they do to other languages like C# for instance.
Here are just 3 of the thousands of reasons that clearly illustrate that PHP is not Object Oriented;
1) It does not support casting of objects from one class to another.
2) It was not developed to be Object Oriented i.e. thousands of functions do not belong to any object.
3) “A new PHP” Project (Zend Framework) was created to make PHP, Object Oriented.Object Oriented Programming is more than a commercial phrase; it is a syntax or API Application Programming. It is a manner of thinking about the problem in a more productive model. As Tom Archer said: “In a truly Object Oriented language, every entity is expressed through the concept of objects. The objects are the main and unique idea behind the concept of Object Oriented”… As I say: Not everything that appears is!
Carl Lewis was made for running, not swimming. PHP supports objects but was not designed to be object-oriented.
1) il primo paragrafo di wikipedia-artical su prog progang ha una struttura che spiega perché
2) non ci sono concetti OO che non è possibile applicare in PHP
Leggi altre domande sui tag object-oriented php