Я попытался создать пустой конструктор, который будет принимать объект DataRow в качестве параметра
Я думаю, что вы неправильно запутали термин пустой . Пустой конструктор не принимает параметры по определению. У вас не может быть пустого конструктора с параметрами.
Если вы также хотите сохранить параметр в конструкторе производного класса, вам нужно использовать ключевое слово
base
, чтобы указать базовый конструктор.public Malicious(DataRow row) : base(row) { }
Even though this has an accepted answer, I have a different suggestion.
If you are pulling the data from an API, you should not store the entire payload in a variable. Using curl or other HTTP fetchers you can automatically store your data in a file.
Assuming you are fetching the data through a simple GET url:
$url = 'http://www.example.com/myfile.base64';
$target = 'localfile.data';
$rhandle = fopen($url,'r');
stream_filter_append($rhandle, 'convert.base64-decode');
$whandle = fopen($target,'w');
stream_copy_to_stream($rhandle,$whandle);
fclose($rhandle);
fclose($whandle);
Benefits:
If you must grab the data from a temporary variable, I can suggest this approach:
$data = 'your base64 data';
$target = 'localfile.data';
$whandle = fopen($target,'w');
stream_filter_append($whandle, 'convert.base64-decode',STREAM_FILTER_WRITE);
fwrite($whandle,$data);
fclose($whandle);
Декодировать данные меньшими порциями. Четыре символа данных Base64 равны трем байтам данных Base256.
Таким образом, вы можете сгруппировать каждые 1024 символа и декодировать их в 768 октетов двоичных данных:
$chunkSize = 1024;
$src = fopen('base64.data', 'rb');
$dst = fopen('binary.data', 'wb');
while (!feof($src)) {
fwrite($dst, base64_decode(fread($src, $chunkSize)));
}
fclose($dst);
fclose($src);