I am using ampps as a windows 10 apache server, my php version is 7.3. I downloaded it from the LibreOffice download page and installed it on my computer. Then I installed this library via composer https://github.com/ncjoes/office-converter. I try as in the example given, but it does not convert and gives an error. I would be very grateful if you could help me where I am wrong. Here is my code sample and the error I encountered:
<?php if (!file_exists(__DIR__.'/vendor/autoload.php')) echo 'autoload.php mevcut değil!'; else require __DIR__.'/vendor/autoload.php'; use NcJoesOfficeConverterOfficeConverter; use PHPUnitFrameworkTestCase; class OfficeConverterTest extends TestCase { /** * @var OfficeConverter $converter */ private $converter; private $outDir; public function setUp() { parent::setUp(); $DS = DIRECTORY_SEPARATOR; $file = __DIR__."{$DS}sources{$DS}test.docx"; $this->outDir = __DIR__."{$DS}results"; $this->converter = new OfficeConverter($file, $this->outDir); } public function testDocxToPdfConversion() { $output = $this->converter->convertTo('result.pdf'); $this->assertFileExists($output); } public function testDocxToHtmlConversion() { $output = $this->converter->convertTo('result.html'); $this->assertFileExists($output); } } $donustur = new OfficeConverterTest(); $donustur->testDocxToPdfConversion(); ?>
Fatal error: Uncaught Error: Call to a member function convertTo() on null in C:Program FilesAmppswwwconverterconverter.php:29 Stack trace: #0 C:Program FilesAmppswwwconverterconverter.php(43): OfficeConverterTest->testDocxToPdfConversion() #1 {main} thrown in C:Program FilesAmppswwwconverterconverter.php on line 29
Advertisement
Answer
When running tests, we are supposed to leave running them to phpunit
, but you are trying to call manually (in last 2 lines of your code).
But if you insist on calling manually, change:
$donustur = new OfficeConverterTest(); $donustur->testDocxToPdfConversion();
Into:
$donustur = new OfficeConverterTest(); $donustur->setUp(); $donustur->testDocxToPdfConversion();
So that you call
setUp()
whichphpunit
would normally call for you automatically.
See also:
How do I run all my PHPUnit tests?
How to run single test method with phpunit?
Example for page
If you want to use this logic on a Web-Page, it should look something like:
<?php if (!file_exists(__DIR__.'/vendor/autoload.php')) echo 'autoload.php mevcut değil!'; else require __DIR__.'/vendor/autoload.php'; use NcJoesOfficeConverterOfficeConverter; echo 'Converting...<br>'; $input = __DIR__ . '/test.docx'; $converter = new OfficeConverter($input, __DIR__.'/results'); $output = $converter->convertTo('result.pdf'); echo 'Saved at:' . $output . '<br>';