PHP code example of airship / flagger

1. Go to this page and download the library: Download airship/flagger 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/ */

    

airship / flagger example snippets




// Create an instance with an env key
$flagger = new Flagger\Flagger(new Flagger\Client\GuzzleClient('<env_key>'));

if ($flagger->flag('bitcoin-pay')->isEnabled(['id' => 5])) {
  // ...
}

// Define your entity
$entity = [
  'type' => 'User', // 'type' starts with a capital letter '[U]ser', '[H]ome', '[C]ar'. If omittied, it will default to 'User'
  'id' => '1234', // 'id' must be a string or integer
  'displayName' => '[email protected]', // must be a string. If omitted, the SDK will use the same value as 'id' (converted to a string)
];
// or
$entity = new Entity(1234, 'User', '[email protected]');

// The most compact form can be:
$entity = [
  'id' => 1234
];
// or
$entity = new Entity(1234);

// as this will translate into:
$entity = [
  'type' => 'User',
  'id' => '1234',
  'displayName' => '1234',
];

$flagger->flag('bitcoin-pay')->isEnabled($entity); // Does the entity have the feature 'bitcoin-pay'?
$flagger->flag('bitcoin-pay')->getTreatment($entity); // Get the treatment associated with the flag
$flagger->flag('bitcoin-pay')->isEligible($entity);
// Returns true if the entity can potentially receive the feature via sampling
// or is already receiving the feature.

// Note: It may take up to a minute for entities gated to show up on our web app.

// Define your entity with an attributes dictionary of key-value pairs.
// Values must be a string, a number, or a boolean. nil values are not accepted.
// For date or datetime string value, use iso8601 format.
$entity = [
  'type' => 'User',
  'id' => '1234',
  'displayName' => '[email protected]',
  'attributes' => [
    't_shirt_size' => 'M',
    'date_created' => '2018-02-18',
    'time_converted' => '2018-02-20T21:54:00.630815+00:00',
    'owns_property' => true,
    'age' => 39,
  ],
];
// or
$entity = new Entity(
  1234,
  'User',
  '[email protected]',
  [
    't_shirt_size' => 'M',
    'date_created' => '2018-02-18',
    'time_converted' => '2018-02-20T21:54:00.630815+00:00',
    'owns_property' => true,
    'age' => 39,
  ]
);

// Now in app.airshiphq.com, you can target this particular user using its
// attributes

// An entity can be a member of a group.
// The structure of a group entity is just like that of the base entity.
$entity = [
  'type' => 'User',
  'id' => '1234',
  'displayName' => '[email protected]',
  'attributes' => [
    't_shirt_size' => 'M',
    'date_created' => '2018-02-18',
    'time_converted' => '2018-02-20T21:54:00.630815+00:00',
    'owns_property' => true,
    'age' => 39,
  ],
  'group' => [
    'type' => 'Club',
    'id' => '5678',
    'displayName' => 'SF Homeowners Club',
    'attributes' => [
      'founded' => '2016-01-01',
      'active' => true,
    ],
  ],
];
// or
$group = new Entity(
  5678,
  'Club',
  'SF Homeowners Club',
  [
    'founded' => '2016-01-01',
    'active' => true,
  ]
);
$user = new Entity(
  1234,
  'User',
  '[email protected]',
  [
    't_shirt_size' => 'M',
    'date_created' => '2018-02-18',
    'time_converted' => '2018-02-20T21:54:00.630815+00:00',
    'owns_property' => true,
    'age' => 39,
  ],
  $group
);

// Inheritance of values `isEnabled`, `getTreatment`, `getPayload`, and `isEligible` works as follows:
// 1. If the group is enabled, but the base entity is not,
//    then the base entity will inherit the values `isEnabled`, `getTreatment`, `getPayload`, and `isEligible` of the group entity.
// 2. If the base entity is explicitly blacklisted, then it will not inherit.
// 3. If the base entity is not given a variation in rule-based variation assignment,
//    but the group is and both are enabled, then the base entity will inherit
//    the variation of the group's.


// You can ask questions about the group directly (use the `is_group` flag):
$entity = [
  'isGroup' => true,
  'type' => 'Club',
  'id' => '5678',
  'displayName' => 'SF Homeowners Club',
  'attributes' => [
    'founded' => '2016-01-01',
    'active' => true,
  ],
];

$flagger->flag('bitcoin-pay')->isEnabled($entity);