Usage

Command

A command is provided to enable you to quickly convert files:

$ php classyfile convert vendor-lib/src/VendorName/Api/Lib/ --create-namespace --offset=2 --length=3

The --code-destination option can be used to set where the files will be saved, the Current Working Directory is used by default.

As of v0.2.0 a new option was added that can covert constant names to uppercase (declaration only). Use the option --constants-to-upper

When using the ClassyFile class you have to available methods: generateClasses and GenerateClassFiles

Generate Classes

<?php
include 'vendor/autoload.php';

$classifile = new \Onema\ClassyFile\ClassyFile();

$codeLocation = 'path/to/directory/with/PHP/Files/';
$code = $classyfile->generateClasses($codeLocation)
var_dump($code);

The code returned by the generateClasses method is a nested file containing the following information (you can see the sample class here ):

array(1) {
  'mock_classes_style1.php' =>
  array(3) {
    'ServiceSettings' =>
        string "<?php\n\nnamespace Service\\WithBad\\ClassFiles;\n ..."
        'TimeInterval' =>
        string "<?php\n\nnamespace Service\\WithBad\\ClassFiles;\n ..."
        'Scale' =>
        string "<?php\n\nnamespace Service\\WithBad\\ClassFiles;\n ..."
  }
}

The returned array follows this structure:

[
  'original_file_name1.php' => [
    'ClassName1' [code],
    'ClassName2' [code],
    '...'
  ],
  'original_file_name2.php' => [
    '...'
  ],
]

Generate Class Files

Each class can be saved into it's own file by using the method generateClassFiles and passing a code destination location and a code origin location. This method will not return the code array.

<?php
include 'vendor/autoload.php';

$classifile = new \Onema\ClassyFile\ClassyFile();

$codeLocation = 'path/to/directory/with/PHP/Files/';
$codeDestination = '/tmp/';
$classifile->generateClassFiles($codeDestination, $codeLocation);

Files will be created under a directory structure following the classes namespace in the $codeDestination directory.

If the classes in the files do not contain a namespace you can choose to create it based on a section of the $filePath, e.g.

$filePath = 'vendor-lib/src/VendorName/Api/Lib/';
$classifile->generateClassFiles($codeDestination, $filePath, true, 2, 3);

This will generate all classes with the namespace VendorName\Api\Lib; and will be saved under the VendorName/Api/Lib/ directory.