PHP code example of archipro / silverstripe-smart-enum

1. Go to this page and download the library: Download archipro/silverstripe-smart-enum library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

archipro / silverstripe-smart-enum example snippets


use SilverStripe\ORM\DataObject;

class MyRecord extends DataObject
{
    private static $table_name = 'MyRecord';

    private static $db = [
        'Status' => 'SmartEnum("My\\\\Namespace\\\\Status", "PENDING")',
    ];
}

private static $db = [
    'Priority' => 'SmartEnum("My\\\\Namespace\\\\Priority", 1)',
];

'Status' => 'SmartEnum("My\\\\Namespace\\\\Status")',

'Status' => 'SmartEnum("My\\\\Namespace\\\\Status", "PENDING")',
'Priority' => 'SmartEnum("My\\\\Namespace\\\\Priority", 1)',

'Status' => 'SmartEnum("My\\\\Namespace\\\\Status", null)',

use My\Namespace\Priority;
use My\Namespace\Status;
use SilverStripe\ORM\DataObject;

class MyRecord extends DataObject
{
    private static array $db = [
        'Status' => Status::class,
        'Priority' => Priority::class . '(1)',
    ];
}

use ArchiPro\Silverstripe\SmartEnum\SmartEnumServiceConfigurationLocator;

SmartEnumServiceConfigurationLocator::install();

use ArchiPro\Silverstripe\SmartEnum\SmartEnumServiceConfigurationLocator;
use SilverStripe\Core\Injector\Injector;

$injector = Injector::inst();
$injector->setConfigLocator(new SmartEnumServiceConfigurationLocator(
    $injector->getConfigLocator()
));

'Status' => 'SmartEnum("My\\\\Namespace\\\\Status", "PENDING", ["use_native_db_enum" => false, "varchar_length" => 64])',
'Priority' => 'SmartEnum("My\\\\Namespace\\\\Priority", 1, ["use_native_db_enum" => false])',

private static array $extensions = [
    ArchiPro\Silverstripe\SmartEnum\SmartEnumDataExtension::class,
];

use My\Namespace\Status;

/**
 * @property Status|null $Status
 */
class MyRecord extends DataObject
{
    // ...
}