PHP code example of francescomalatesta / laravel-feature
1. Go to this page and download the library: Download francescomalatesta/laravel-feature 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/ */
francescomalatesta / laravel-feature example snippets
class CMSController extends Controller {
public function getPage($pageSlug) {
// here we are getting our page code from some service
$content = PageService::getContentBySlug($pageSlug);
// here we are showing our page code
return view('layout.pages', compact('content'));
}
}
class CMSController extends Controller {
public function getPage($pageSlug) {
// here we are getting our page code from some service
$content = PageService::getContentBySlug($pageSlug);
// feature flagging here!
if(Feature::isEnabled('page_code_cleaner')) {
$content = PageCleanerService::clean($content);
}
// here we are showing our page code
return view('layout.pages', compact('content'));
}
}
// release the feature!
Feature::enable('page_code_cleaner');
// hide the feature!
Feature::disable('page_code_cleaner');
Feature::remove('page_code_cleaner');
<div>This is an example template div. Always visible.</div>
@feature('my_awesome_feature')
<p>This paragraph will be visible only if "my_awesome_feature" is enabled!</p>
@endfeature
<div>This is another example template div. Always visible too.</div>
...
class User extends Authenticatable implements FeaturableInterface
{
use Notifiable, Featurable;
...
$user = Auth::user();
// now, the feature "my.feature" is enabled ONLY for $user!
Feature::enableFor('my.feature', $user);
// now, the feature "my.feature" is disabled for $user!
Feature::disableFor('my.feature', $user);
@featurefor('my.feature', $user)
// do $user related things here!
@endfeaturefor
// $role is the admin role!
$role = Auth::user()->role;
...
Feature::enableFor('my.feature', $role);
...
if(Feature::isEnabledFor('my.feature', $role)) {
// this code will be executed only if the user is an admin!
}
namespace LaravelFeature\Domain\Repository;
use LaravelFeature\Domain\Model\Feature;
use LaravelFeature\Featurable\FeaturableInterface;
interface FeatureRepositoryInterface
{
public function save(Feature $feature);
public function remove(Feature $feature);
public function findByName($featureName);
public function enableFor($featureName, FeaturableInterface $featurable);
public function disableFor($featureName, FeaturableInterface $featurable);
public function isEnabledFor($featureName, FeaturableInterface $featurable);
}