L'avevo originariamente posto su StackOverflow. La domanda è stata chiusa e mi è stato chiesto di postare qui invece. Ecco la domanda originale che avevo postato lì:
Sto programmando da un po 'di tempo con il metodo procedurale. Ho fatto un buon numero di letture relative a OOP e so come usarlo. È solo che non sono sicuro se so ancora come usarlo correttamente? Quindi, per metterlo alla prova, sto presentando uno scheletro di un plugin che ho sviluppato usando OOP. Si suppone che il plugin recuperi valori come abbonati, seguiti ecc. Da vari social network.
// This is an abstract class used by all Social Network classes
abstract class Social_Network {
protected $service_url,$service_identifier,$icon_url,$refresh_data;
function __construct($arguments) {
// Code to populate the protected variables declared above
}
protected function get_value_internal() {
// Internal here means get data from cache.
// Call get_value_external If cache data has expired or does not exist
}
protected function parse_json_data($data) {
// This function parses data and gets the requested value from it
}
public function display_value() {
// This is a public function which outputs the value
// Call get_value_internal
// Display the value with icon, etc.
}
//This will be different for all networks because every network would have a different method for retrieving data
abstract function get_value_external();
}
class Facebook_Social_Network extends Social_Network {
function get_value_external() {
// Unique code for retrieving data from Facebook
// Process the data fetched above and parse it using the parse_json_data function defined in our abstract class
return $this - > parse_json_data($data);
}
}
class Twitter_Social_Network extends Social_Network {
function get_value_external() {
// Unique code for retrieving data from Twitter
// Process the data fetched above and parse it using the parse_json_data function defined in our abstract class
return $this - > parse_json_data($data);
}
}
class YouTube_Social_Network extends Social_Network {
function get_value_external() {
// Unique code for retrieving data from YouTube
// Data returned by YouTube is processed differently so this doesn't use the shared method parse_json_data
// Process the data and put it inside a variable named $value which will be returned below
return $value;
}
}
Apprezzerò se qualcuno bravo in OOP può dare una rapida occhiata e dirmi se sono in linea con la mia comprensione, vicino al bersaglio o lontano?
Una cosa che mi infastidisce è se avrei dovuto usare solo una classe che gestisse tutte le reti?