Qualcuno ha tentato di rendere le funzioni di sistema di PHP più orientate agli oggetti?

StackOverflow https://stackoverflow.com/questions/61784

  •  09-06-2019
  •  | 
  •  

Domanda

Sono solo curioso di sapere se esiste qualche progetto che tenta di raggruppare tutte (o la maggior parte) delle funzioni integrate di PHP in una gerarchia di classi più orientata agli oggetti.Ad esempio, raggruppando tutte le funzioni stringa in un'unica classe String, ecc.

Mi rendo conto che questo in realtà non risolverà alcun problema (a meno che le modifiche non siano avvenute a livello del codice sorgente PHP), poiché tutte le funzioni integrate sarebbero ancora accessibili nello spazio dei nomi globale, ma renderebbe sicuramente l'usabilità molto più semplice.

È stato utile?

Soluzione

Per rispondere alla tua domanda: sì, esistono diverse biblioteche che fanno esattamente ciò di cui stai parlando.Per quanto riguarda quale si desidera utilizzare è una questione completamente diversa.PHPClasses e Pear.org sono buoni posti per iniziare a cercare tali librerie.

Aggiornamento:Come altri hanno suggerito, SPL è una buona libreria e racchiude molte delle funzioni php integrate.Tuttavia ci sono ancora molte funzioni php che non include.Lasciandoci ancora senza una soluzione miracolosa.

Utilizzando framework come Cakephp e Zend (anche altri), ho notato che tentano di risolvere alcuni di questi problemi includendo le proprie librerie e costruendo elementi di base come la connettività DB nel framework.Quindi i framework potrebbero essere un’altra soluzione

Altri suggerimenti

Troppe volte.Non appena qualcuno scopre che PHP ha funzionalità OO, vuole racchiudere tutto in classi.

Il punto delle cose OO in PHP è che puoi progettare le tue soluzioni nel modo che preferisci.Ma racchiudere le funzioni esistenti in Oggetti non produce molti vantaggi.

Detto questo, il nucleo di PHP è già abbastanza orientato agli oggetti.Dare un'occhiata a SPL.

Penso che qualcosa del genere sia fondamentale affinché PHP possa andare avanti.Essendo principalmente un programmatore .Net, trovo difficile lavorare con PHP con il suo milione e 1 di funzioni globali.È bello che PHP 5.3 abbia spazi dei nomi, ma non aiuta molto quando le loro librerie non sono nemmeno orientate agli oggetti, per non parlare dell'utilizzo degli spazi dei nomi.Non mi dispiace molto PHP come linguaggio, ma la loro API è terribilmente disorganizzata e probabilmente necessita di una revisione completa.Un po' come quello che ha vissuto VB quando è diventato VB.Net.

Non sono d'accordo.La programmazione orientata agli oggetti non è intrinsecamente migliore della programmazione procedurale.Credo che non dovresti usare OO a meno che tu non abbia bisogno di un comportamento polimorfico (ereditarietà, metodi di sostituzione, ecc.).Usare gli oggetti come semplici contenitori per il codice non vale la spesa.Questo è in particolar modo vero per le stringhe perché sono usate così tanto (ad es.come chiavi di array).Ogni applicazione può solitamente trarre vantaggio da alcune caratteristiche polimorfiche ma solitamente ad alto livello.Vorresti mai estendere una classe String?

Inoltre, è necessaria un po' di storia per comprendere la strana denominazione delle funzioni di PHP.PHP si basa sulla libreria C standard e sullo standard POSIX e utilizza molti degli stessi nomi di funzione (strstr, getcwd, ldap_open, ecc.).Questa è in realtà una buona cosa perché riduce al minimo la quantità di codice vincolante del linguaggio, garantisce che un insieme completo di funzionalità ben congegnate (quasi tutto ciò che puoi fare in C può essere fatto in PHP) e queste librerie di sistema sono altamente ottimizzate (ad es.strchr è solitamente in linea, il che lo rende circa 10 volte più veloce).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top