У вашего определения класса есть некоторые проблемы. Вы используете очень старый стиль конструктора (который был удален из PHP5, в настоящее время конструктор должен называться __construct()
). Кроме того, в вашем конструкторе много чего не должно быть, но это проблема дизайна и выходит за рамки.
Я собираюсь лишь слегка коснуться проблем ООП и попытаться решить основные специфические проблемы, которые возникают у вас при получении этих строк и печати этих значений:
class DoctorService {
private $totalPatientsA = [];
private $totalPatientsB = [];
private $conn;
public function __construct($conn) {
$this->conn = $conn;
}
function fetchPatients {
$doctor_type_query = "SELECT user_type_detail, COUNT(user_type) AS
'datacount' FROM users GROUP BY user_type";
$doctor_type_result = mysqli_query( $this->conn, $doctor_type_query );
while ( $patients = mysqli_fetch_assoc( $doctor_type_result ) ) {
$this->totalPatientsA[] = $patients['user_type_detail'];
$this->totalPatientsB[] = $patients['datacount'];
}
}
public function getTotalPatientsA() {
return $this->totalPatientsA;
}
public function getTotalPatientsB() {
return $this->totalPatientsB;
}
}
С этим, теперь db Соединение объявляется за пределами вашего класса доктора и становится зависимостью для него, объявленным в конструкторе.
Чтобы использовать его, вы должны сделать что-то вроде:
// I'm assuming this defines `$conn`, this is not the cleanest approach but it works for your purposes.
require_once "dbconnection.php";
$doctor_service = new DoctorService($conn);
$doctor_service->fetchPatients();
echo implode(', ', $doctor_service->getTotalPatientsA()), "\n";
echo implode(', ', $doctor_service->getTotalPatientsB()), "\n";
Сначала вам потребуется определение соединения с БД, которое вводит $conn
в область видимости, и добавьте его в свой класс DoctorService
.
Вы вызываете $doctor_service->fetchPatients()
, чтобы фактический запрос был выполнен.
Для извлечения пациентов вы вызываете каждый из получателей, и, поскольку они возвращают массив, вы передаете результат через implode
, поэтому он преобразуется в строку.
А-ч, я понял это:
WITH Hierarchy(TaskID, [Subject], ParentID, IsProject, HLevel)
AS
(
SELECT
TaskID,
[Subject],
ParentID ,
IsProject,
0 as HLevel
FROM
Task
WHERE
TaskID = 59
UNION ALL
SELECT
SubDepartment.TaskID,
SubDepartment.[Subject],
SubDepartment.ParentID ,
SubDepartment.IsProject,
HLevel + 1
FROM
Task SubDepartment
INNER JOIN
Hierarchy ParentDepartment
ON
SubDepartment.TaskID = ParentDepartment.ParentID
)
SELECT
TaskID,
[Subject],
ParentID,
IsProject,
HLevel
FROM
Hierarchy
ORDER BY
HLevel DESC