Szukałem wszędzie i nie mogę znaleźć odpowiedzi w taki czy inny sposób. Czy jest to do przyjęcia (dobra lub zła praktyka) do ponownego użycia lub recyklingu zmiennej? Działa, i użyłem tej metody kilka razy, ale nie wiem, czy powinienem to robić, czy nie. Próbuję uciec od używania metod statycznych i przejść do zastrzyku zależności.Czy można poddawać recyklingowi lub ponownie używać zmiennych?
w tym przykładzie nazwa $ table_name jest ustawiona gdzie indziej.
class DbObject {
private $db = NULL;
protected $table_name;
public function __construct($dbh, $item) {
$this->db = $dbh;
$this->$table_name = $item;
}
// counts items in database //
public function count_all() {
try {
$sql = 'SELECT COUNT(*) FROM ' . $this->table_name;
$stmt = $this->db->query($sql);
$stmt->setFetchMode(pdo::FETCH_COLUMN, 0);
$result = $stmt->fetchColumn();
return $result;
} catch (PDOException $e) {
echo $e->getMessage());
}
}
Aby użyć tego chciałbym użyć go w ten sposób:
$total_count = new DbObject(new Database(), 'items');
$total_count = $total_count->count_all();
Czy to akceptowalnym sposobem na kod? Dzięki za pomoc.
Jest to poprawne pod względem technicznym, ale spowoduje wiele zamieszania podczas debugowania. – alecwhardy
Pytanie jest nieco błędne: zmienne są często ponownie używane i "poddawane recyklingowi" (do czego one służą, często używa się zmiennej o wartości większej niż pewnego razu). Bardziej niepokoi Cię nazwa zmiennej. Która właściwie odpowiada na pytanie: nie używaj tej samej nazwy dla różnych rzeczy, jeśli nie chcesz mieć fałszywych przyjaciół. – hakre