Я пытаюсь написать класс для API, и мне нужен мой конструктор, чтобы использовать некоторые методы в качестве параметров (потому что я получаю данные из csv). Я делаю некоторые испытания с этим:Метод pass как параметр конструктора
class API {
public $a;
public $b;
function __construct(){
$this->a = setA($a);
$this->b = setB($b);
}
function setA($a){
$a = "X";
}
function setB($b){
$b = "Y";
}
}
но это не работает. Возможно ли это или правильно?
Редактировать: По просьбе пользователя Halcyon.
Оригинальный дизайн выполнен на различных функциях, взаимодействующих друг с другом. Это было не самое лучшее, потому что данные извлекались снова и снова, вместо того, чтобы читать только с 1 места.
методы для CSV и JSON являются:
function getJsonData(){
$stream = fopen('php://input', 'rb');
$json = stream_get_contents($stream);
fclose($stream);
$order_json_data = json_decode($json, true);
return $order_json_data;
}
function getProductsTable($csvFile = '', $delimiter = ','){
if (!file_exists($csvFile) || !is_readable($csvFile))
echo 'File not here';
$header = NULL;
$data = array();
if (($handle = fopen($csvFile, 'r')) !== FALSE){
while (($row = fgetcsv($handle, 100, $delimiter)) !== FALSE){
if (!$header)
$header = $row;
else if($row[0] != ''){
$row = array_merge(array_slice($row,0,2), array_filter(array_slice($row, 2)));
$sku = $row[0];
$data[$sku]['productCode'] = $row[1];
$data[$sku]['Description'] = $row[2];
}
}
fclose($handle);
}
array_change_key_case($data, CASE_LOWER);
return $data;
}
Edit: Включая индексный файл, где я тестирование объекта.
<?php
require_once 'helpers/API.php';
if (in_array($_GET['action'],array('insertOrder','updateOrder'))){
$api = new API();
file_put_contents('debug/debug_info.txt', "Object response: {$api->a}, {$api->b}", FILE_APPEND | LOCK_EX);
}
'$ a' и' $ b' не существуют в рамках конструктора; поэтому определите определение конструктора и передайте их в качестве аргументов при создании нового API() –
@MarkBaker. Я не могу передать их при создании экземпляра. Это проблема. Я думал об использовании методов для получения данных. Это плохой подход? – Onilol
@Onilol Откуда берутся данные? – Halcyon