1. Go to this page and download the library: Download zenmanage/zenmanage-laravel 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/ */
zenmanage / zenmanage-laravel example snippets
use Zenmanage\Laravel\Facades\Zenmanage;
if (Zenmanage::single('new-dashboard')->isEnabled()) {
return view('dashboard-v2');
}
return view('dashboard');
use Zenmanage\Flags\Context\Context;
use Zenmanage\Laravel\Facades\Zenmanage;
// Check if user has access to beta features
$context = Context::single('user', $user->id, $user->name);
$betaAccess = Zenmanage::withContext($context)
->single('beta-program')
->isEnabled();
if ($betaAccess) {
// User is in beta program
$features = $this->getBetaFeatures();
}
use Zenmanage\Flags\Context\Context;
use Zenmanage\Laravel\Facades\Zenmanage;
// Just provide a context with an identifier — the SDK does the rest
$context = Context::single('user', $user->id);
$flag = Zenmanage::withContext($context)->single('new-checkout-flow');
if ($flag->isEnabled()) {
// This user is in the rollout percentage
return view('checkout.new');
}
// This user is outside the rollout
return view('checkout.classic');
// Get configuration values from flags
$apiTimeout = Zenmanage::single('api-timeout', 5000)->asNumber();
$maxUploadSize = Zenmanage::single('max-upload-mb', 10)->asNumber();
$welcomeMessage = Zenmanage::single('welcome-text', 'Welcome!')->asString();
// Quickly disable a problematic feature via dashboard
if (Zenmanage::single('new-payment-processor', false)->isEnabled()) {
return $this->processWithNewSystem($payment);
}
return $this->processWithLegacySystem($payment);
use Zenmanage\Flags\Context\Context;
// Target by user ID with name
$context = Context::single('user', $user->id, $user->name);
// Target by organization
$context = Context::single('organization', $company->id, $company->name);
// Target by user with just ID
$context = Context::single('user', $user->id);
// If 'new-checkout' doesn't exist, returns true
$enabled = Zenmanage::single('new-checkout', true)->isEnabled();
// Configuration value with fallback
$timeout = Zenmanage::single('api-timeout', 5000)->asNumber();
use Zenmanage\Flags\DefaultsCollection;
$defaults = DefaultsCollection::fromArray([
'new-ui' => true,
'max-upload-size' => 10,
'welcome-message' => 'Welcome to our app!',
'feature-x' => false,
]);
$flags = Zenmanage::withDefaults($defaults);
// All these will use defaults if flags don't exist
$newUI = $flags->single('new-ui')->isEnabled();
$maxSize = $flags->single('max-upload-size')->asNumber();
$message = $flags->single('welcome-message')->asString();
$defaults = DefaultsCollection::fromArray(['timeout' => 3000]);
// Uses API value if exists, otherwise inline (5000), then collection (3000)
$timeout = Zenmanage::withDefaults($defaults)
->single('timeout', 5000)
->asNumber();
use Zenmanage\Laravel\Facades\Zenmanage;
// Get all flags
$flags = Zenmanage::all();
// Get a single flag
$flag = Zenmanage::single('flag-key');
// With default
$flag = Zenmanage::single('flag-key', false);
use Zenmanage\Laravel\Contracts\Client;
class DashboardController extends Controller
{
public function __construct(private Client $zenmanage) {}
public function index()
{
if ($this->zenmanage->single('new-dashboard')->isEnabled()) {
return view('dashboard-v2');
}
return view('dashboard');
}
}
$results = Zenmanage::all();
foreach ($results as $flag) {
$key = $flag->getKey();
$type = $flag->getType();
// Get value based on type
if ($flag->getType() === 'boolean') {
$value = $flag->asBool();
} elseif ($flag->getType() === 'number') {
$value = $flag->asNumber();
} else {
$value = $flag->asString();
}
}
$flag = Zenmanage::single('flag-key');
// Boolean check
if ($flag->isEnabled()) {
// Feature is enabled
}
// Get typed values
$boolValue = $flag->asBool();
$stringValue = $flag->asString();
$numberValue = $flag->asNumber();
use Zenmanage\Flags\Context\Context;
use Zenmanage\Laravel\Facades\Zenmanage;
// Report usage (optional - single() does this automatically)
Zenmanage::reportUsage('flag-key');
// Report with context
$context = Context::single('user', 'user-123');
Zenmanage::reportUsage('flag-key', $context);
use Zenmanage\Laravel\Facades\Zenmanage;
Zenmanage::refreshRules();
use Zenmanage\Flags\Flag;
use Zenmanage\Laravel\Facades\Zenmanage;
public function test_new_feature_for_beta_users()
{
Zenmanage::shouldReceive('single')
->with('beta-feature')
->andReturn(new Flag(...));
// Your test code
}
Zenmanage::fake();
// Now calls to Zenmanage won't hit the real API