Bir sınıf bir sınıf hem de genişletmek ve bir arabirimi uygulayabilirsiniz

2 Cevap php

Can a class extend both an interface and another class in PHP?
Basically I want to do this:

interface databaseInterface{
 public function query($q);
 public function escape($s);
 //more methods
}

class database{ //extends both mysqli and implements databaseInterface
 //etc.
}

Nasıl bir basitçe yapıyor, bu yapardı:

class database implements databaseInterface extends mysqli{

ölümcül bir hata sonuçları:

Parse error: syntax error, unexpected T_EXTENDS, expecting '{' in *file* on line *line*

2 Cevap

Çevresinde başka bir yol deneyin:

class database extends mysqli implements databaseInterface { ...}

Bu çalışması gerekir.

Evet olabilir. Sadece doğru düzeni korumak gerekir.

class database extends mysqli implements databaseInterface { ... }

Ayrıca, bir sınıf birden fazla arayüz uygulayabilirsiniz. Sadece virgül ile onları ayrı.

Ancak, bu extending mysqli class is incredibly bad idea sizi uyarmak zorunda hissediyorum. Kalıtım başına muhtemelen nesne yönelimli programlama en overrated ve kullanılmayan bir kavramdır.

Bunun yerine db-ilgili şeyler mysqli yolu (veya PDO yol) yapıyor tavsiye ediyorum.

Ayrıca, küçük bir şey, ama adlandırma kurallarına önemi yok. Sizin class database daha genel görünüyor ardından mysqli, bu nedenle önerir database gelen ikinci devralır ve etrafında değil yoldur.