Zum Hauptinhalt springen
Mit dem PHP SDK können Sie Experiments ausführen und feature flags auf Ihrem PHP-Backend-Server aktivieren. Die Integration unseres SDKs in Ihre Webanwendung ist einfach, und sein Footprint (Speicher- und Netzwerknutzung) ist gering. Erste Schritte: Hilfe für den Einstieg finden Sie im Entwicklerhandbuch. Changelog: Aktuelle Version des PHP SDK: 4.23.0 Changelog. SDK-Methoden: Die vollständige Referenzdokumentation des PHP SDK finden Sie im Abschnitt Referenz.

Developer guide

Dieser Leitfaden hilft Ihnen bei der Integration unseres SDKs in den Code Ihrer Anwendung.

Erste Schritte

Sie sollten zunächst unser SDK installieren. Nach dem Entpacken sehen Sie zwei Verzeichnisse: kameleoon/ und job/.

Installation des PHP-Clients (Composer-Paket)

Bitte lesen Sie sorgfältig die Abschnitte zur Installation des Cron-Jobs und zur Verwendung des PHP SDK ohne Cron-Job.
Das Installationspaket ist auf Packagist verfügbar. Sie können das PHP SDK installieren, indem Sie es als Abhängigkeit über Composer hinzufügen:
composer.json
{
  "require": {
    "kameleoon/kameleoon-client-php": "^4.18.0"
  }
}
Führen Sie schließlich den folgenden Befehl aus, um den Autoloader neu zu generieren:
composer install

Mit einem Cron-Job (Empfohlen)

Die Einrichtung des Cron-Jobs ermöglicht das Tracking von Daten, die durch das PHP SDK mit der Methode addData() hinzugefügt wurden. Wenn Sie ihn jedoch nicht installieren können, kann das Frontend-Tracking gemäß diesem Leitfaden weiterhin implementiert werden.
Das Verzeichnis job/ entspricht einem Job, der über einen Standard-Job-Scheduler (wie Cron) ausgeführt werden muss. Wir empfehlen, das Skript unter /usr/local/opt/kameleoon/kameleoon-client-php-process-queries.sh zu installieren und unseren standardmäßig bereitgestellten crontab-Eintrag zu verwenden. Sie können es jedoch an einem anderen Speicherort installieren und den crontab-Eintrag entsprechend anpassen.
Ohne Cron-Job
Wenn Sie den Cron-Job nicht installieren können, können Sie Kameleoon im Hybridmodus verwenden, um von den Tracking-Funktionen der Kameleoon Application Engine engine.js (zuvor kameleoon.js) zu profitieren. Unser SDK bietet die Methode getEngineTrackingCode(), die Expositions-Events an Kameleoon oder eine andere Analyselösung sendet, die Sie auf Ihrer Website verwenden.
Mit diesem Ansatz können Sie keine Daten verfolgen, die mit der Methode addData() des PHP SDK hinzugefügt wurden. Mit anderen Worten: Die einzige Möglichkeit für das PHP SDK, Experiment-Daten serverseitig zu sammeln und zu verarbeiten, ist über den Cron-Job. Der Hybridmodus ist für Tracking-Zwecke nützlich, ermöglicht jedoch keine Backend-Datenerfassung.

Zusätzliche Konfiguration

Sie können das Verhalten des PHP SDK über eine Konfigurationsdatei anpassen. Wir stellen eine Beispielkonfigurationsdatei namens client-php.json.sample im SDK-Archiv bereit. Sie können auch eine Beispielkonfigurationsdatei herunterladen. Wir empfehlen, diese Datei unter dem Standardpfad /tmp/kameleoon/client-php.json zu installieren. Die folgende Tabelle zeigt die verfügbaren Eigenschaften, die Sie festlegen können:
SchlüsselBeschreibungStandardwert
clientId / client_id (erforderlich)Erforderlich für die Authentifizierung beim Kameleoon-Dienst. Um Ihre client_id zu finden, lesen Sie die Dokumentation zu API-Zugangsdaten.
clientSecret / client_secret (erforderlich)Erforderlich für die Authentifizierung beim Kameleoon-Dienst. Um Ihr client_secret zu finden, lesen Sie die Dokumentation zu API-Zugangsdaten.
kameleoonWorkDir / kameleoon_work_dir (optional)Legt ein Arbeitsverzeichnis für den PHP-Client fest (der in diesem Verzeichnis Dateien erstellt). Das Verzeichnis muss vom PHP-Benutzer beschreibbar sein./tmp/kameleoon/client-php/
refreshIntervalMinute / refresh_interval_minute (optional)Legt das Aktualisierungsintervall in Minuten fest, in dem das SDK die Konfiguration für die aktiven Experiments und feature flags abruft. Der Wert bestimmt die maximale Zeit, die benötigt wird, um Änderungen wie das Aktivieren oder Deaktivieren von feature flags oder das Starten von Experiments an Ihre Produktionsserver weiterzugeben.60 Minuten
defaultTimeoutMillisecond / default_timeout_millisecond (optional)Legt das Timeout in Millisekunden für Netzwerkanfragen des SDK fest. Setzen Sie den Wert auf 30 Sekunden oder mehr, wenn Sie keine stabile Verbindung haben. Einige Methoden verfügen über einen zusätzlichen Parameter, mit dem Sie das Standard-Timeout für diese bestimmte Methode überschreiben können. Wenn Sie das Timeout für eine Methode nicht explizit angeben, verwendet das SDK diesen Standardwert.10000 Millisekunden
cookieOptions->topLevelDomain / cookie_options.domain (im Hybridmodus erforderlich)Die aktuelle Top-Level-Domain Ihrer Website. Verwenden Sie das Format: example.com. Fügen Sie nicht https://, www oder andere Subdomains hinzu. Kameleoon verwendet diese Informationen, um das entsprechende Cookie auf der Top-Level-Domain zu setzen.null
cookieOptions->secure / cookie_options.secure (optional)Steuert das Cookie-Attribut Secure.false
cookieOptions->httpOnly / cookie_options.http_only (optional)Steuert das Cookie-Attribut HttpOnly.false
cookieOptions->sameSite / cookie_options.samesite (optional)Steuert das Cookie-Attribut SameSite.Lax
environment / environment (optional)Umgebung, aus der die Konfiguration des feature flags verwendet werden soll. Der Wert kann production, staging, development sein. Weitere Informationen finden Sie im Artikel zur Umgebungsverwaltung.production
networkDomain / network_domain (optional)Benutzerdefinierte Domain, die von SDKs für ausgehende Anfragen verwendet wird, oft für Proxying. Muss eine gültige Domain sein (z. B. example.com oder sub.example.com). Ungültige Formate verwenden standardmäßig den Kameleoon-Wert.null
requestBodySizeLimitBytes / request_body_size_limit_bytes (optional)Begrenzt die Größe der Tracking-Pakete (in Bytes) — Dateien, die zwischen den Cron-Job-Läufen gesammelte Daten speichern. In einigen Fällen kann eine Reduzierung der Paketgröße aufgrund von Server- oder Netzwerkbeschränkungen erforderlich sein. Der maximal zulässige Wert beträgt 2,5 MB (2621440 Bytes).2621440
debugMode / debug_mode (veraltet)Der Parameter sendet zusätzliche Informationen an unsere Tracking-Server, um bei der Analyse von Problemen zu helfen. Er sollte normalerweise ausgeschaltet sein (false), aber das Aktivieren (true) hat keinen Einfluss auf die SDK-Leistung. Dieses Feld ist veraltet und wird in der SDK-Version 5.0.0 entfernt. Verwenden Sie stattdessen KameleoonLogger::setLogLevel.false
Wenn Sie nicht den Standardpfad (/tmp/kameleoon/client-php.json) für die Konfigurationsdatei verwenden, müssen Sie:
  • den Pfad Ihrer Konfigurationsdatei als drittes Argument an die Methode KameleoonClientFactory::create() übergeben;
  • Ihren crontab-Eintrag ändern, um das Argument —conf zum Job-Skript hinzuzufügen (z. B. wäre dies bash /usr/local/opt/bin/kameleoon-client-php-process-queries.sh --conf /my/path/kameleoon.json).
Weitere Informationen zu client_id und client_secret und wie Sie diese erhalten, finden Sie im Artikel API-Zugangsdaten. Beachten Sie, dass das Kameleoon PHP SDK die Automation API verwendet und dem OAuth 2.0 Client Credentials Flow folgt.

Initialisierung des Kameleoon-Clients

Nachdem Sie das SDK in Ihre Anwendung installiert und die korrekten Zugangsdaten konfiguriert haben (in /tmp/kameleoon/client-php.json), besteht der nächste Schritt darin, den Kameleoon-Client in Ihrem Anwendungscode zu erstellen. Zum Beispiel:
require "vendor/autoload.php";

use Kameleoon\KameleoonClientConfig;
use Kameleoon\KameleoonClientFactory;
use Kameleoon\Exception\ConfigCredentialsInvalid;
use Kameleoon\Exception\KameleoonException;
use Kameleoon\Exception\SiteCodeIsEmpty;

$siteCode = "a8st4f59bj";

try {
    // Read from default configuration path: "/tmp/kameleoon/php-client/"
    $kameleoonClient = KameleoonClientFactory::create($siteCode);
} catch (SiteCodeIsEmpty $ex) {
    // indicates that provided site code is empty
} catch (ConfigCredentialsInvalid $ex) {
    // indicates that provided clientId / clientSecret are not valid
} catch (KameleoonException $ex) {
    // probably indicates that the SDK is unable to access the **Kameleoon working directory**
}

try {
    $kameleoonClient = KameleoonClientFactory::create($siteCode, "custom/file/path/client-php.json");
} catch (SiteCodeIsEmpty $ex) {
    // indicates that provided site code is empty
} catch (ConfigCredentialsInvalid $ex) {
    // indicates that provided clientId / clientSecret are not valid
} catch (KameleoonException $ex) {
    // probably indicates that the SDK is unable to access the **Kameleoon working directory**
}

try {
    $cookieOptions = KameleoonClientConfig::createCookieOptions(
        "example.com", // domain: optional, but strictly recommended
        false, // secure: optional (false by default)
        false, // httponly: optional (false by default)
        "Lax" // samesite: optional (Lax by default)
    );
    $config = new KameleoonClientConfig(
        "<clientId>", // clientId: mandatory
        "<clientSecret>", // clientSecret: mandatory
        "/tmp/kameleoon/php-client/", // kameleoonWorkDir: optional / ("/tmp/kameleoon/php-client/" by default)
        60, // refreshIntervalMinute: in minutes, optional (60 minutes by default)
        10_000, // defaultTimeoutMillisecond: in milliseconds, optional (10_000 ms by default)
        false, // debugMode: optional (false by default)
        $cookieOptions, // cookieOptions: optional
        "development", // environment: optional ("production" by default)
        "example.com", // networkDomain: optional (null by default)
        1024*1024, // requestBodySizeLimitBytes: optional (2560 * 1024 by default)
    );
    $kameleoonClient = KameleoonClientFactory::createWithConfig($siteCode, $config);
} catch (SiteCodeIsEmpty $ex) {
    // indicates that provided site code is empty
} catch (ConfigCredentialsInvalid $ex) {
    // indicates that provided clientId / clientSecret are not valid
} catch (KameleoonException $ex) {
    // probably indicates that the SDK is unable to access the **Kameleoon working directory**
}
Ein KameleoonClient ist ein Singleton-Objekt, das als Brücke zwischen Ihrer Anwendung und der Kameleoon-Plattform fungiert. Es enthält alle Methoden und Eigenschaften, die Sie zum Ausführen eines Experiments benötigen. Beachten Sie, dass das SDK seine Einstellungen aus einer Konfigurationsdatei bezieht. Standardmäßig wird der Pfad /tmp/kameleoon/client-php.json verwendet, Sie können jedoch einen anderen Pfad für die Konfigurationsdatei verwenden, indem Sie ein optionales drittes Argument an die Methode KameleoonClientFactory::create() übergeben.
Es liegt in Ihrer Verantwortung als Anwendungsentwickler, eine korrekte Logik im Code Ihrer Anwendung im Kontext von A/B test über Kameleoon zu verwenden. Eine gute Praxis besteht darin, immer davon auszugehen, dass der aktuelle Besucher aus dem Experiment ausgeschlossen werden kann, da das Experiment noch nicht gestartet wurde. Das Ausschließen des aktuellen Besuchers ist einfach, da es der Implementierung der Standard-/Referenzvariation entspricht. Die Codebeispiele im nächsten Absatz zeigen Beispiele für einen solchen Ansatz.

Aktivierung eines feature flags

Zuweisen einer eindeutigen ID an einen Benutzer
Um einem Benutzer eine eindeutige ID zuzuweisen, können Sie die Methode getVisitorCode() verwenden. Wenn ein visitor code nicht existiert (aus dem Cookie der Anforderungsheader), generiert die Methode eine zufällige eindeutige ID oder verwendet einen defaultVisitorCode, den Sie generiert hätten. Die ID wird dann in einem Cookie der Antwortheader gesetzt. Wenn Sie Kameleoon im Hybridmodus verwenden, stellt der Aufruf der Methode getVisitorCode() sicher, dass die eindeutige ID (visitor code) zwischen der Anwendungsdatei engine.js (zuvor kameleoon.js) und dem SDK geteilt wird.
Abrufen einer Flag-Konfiguration
Um ein feature flag in Ihrem Code zu implementieren, müssen Sie zunächst das feature flag in Ihrem Kameleoon-Konto erstellen. Um den Status oder die Variation eines feature flags für einen bestimmten Benutzer zu ermitteln, sollten Sie die Methode getVariation() oder isFeatureActive() verwenden, um die Konfiguration basierend auf dem featureKey abzurufen. Die Methode getVariation() verarbeitet sowohl einfache feature flags mit ON/OFF-Zuständen als auch komplexere Flags mit mehreren Variationen. Die Methode ruft die entsprechende Variation für den Benutzer ab, indem sie die Feature-Regeln überprüft, die Variation zuweist und sie basierend auf dem featureKey und visitorCode zurückgibt. Die Methode isFeatureActive() kann verwendet werden, wenn Sie die Konfiguration eines einfachen feature flags abrufen möchten, das nur einen ON- oder OFF-Zustand hat, im Gegensatz zu komplexeren feature flags mit mehreren Variationen oder Targeting-Optionen. Wenn Ihr feature flag zugehörige Variablen hat (z. B. spezifische Verhaltensweisen, die mit jeder Variation verknüpft sind), ermöglicht Ihnen getVariation() auch den Zugriff auf das Variation-Objekt, das Details zur zugewiesenen Variation und ihrem zugehörigen Experiment bereitstellt. Diese Methode überprüft, ob der Benutzer angesprochen wird, findet die zugewiesene Variation des Besuchers und speichert sie im Speicher. Wenn track=true ist, sendet das SDK das Expositions-Event bei einer der nächsten Tracking-Anfragen an das angegebene Experiment, die automatisch vom Cron-Job durchgeführt wird. Standardmäßig beträgt das Intervall 1 Minute. Die Methode getVariation() ermöglicht es Ihnen, zu steuern, ob Tracking durchgeführt wird. Wenn track=false, werden keine Expositions-Events vom SDK gesendet. Dies ist nützlich, wenn Sie Daten lieber nicht über das SDK verfolgen und stattdessen beispielsweise auf clientseitiges Tracking durch die Kameleoon-Engine zurückgreifen möchten. Darüber hinaus ist das Festlegen von track=false nützlich, wenn Sie die Methode getVariations() verwenden, bei der Sie möglicherweise nur die Variationen für alle Flags benötigen, ohne Tracking-Events auszulösen. Wenn Sie mehr darüber erfahren möchten, wie Tracking funktioniert, lesen Sie diesen Artikel
Hinzufügen von Datenpunkten zum Targeting eines Benutzers oder zum Filtern/Aufschlüsseln von Besuchen in Berichten
Um einen Benutzer anzusprechen, stellen Sie sicher, dass Sie relevante Datenpunkte zu seinem Profil hinzugefügt haben, bevor Sie die Feature-Variation abrufen oder prüfen, ob das Flag aktiv ist. Verwenden Sie die Methode addData(), um diese Datenpunkte zum Profil des Benutzers hinzuzufügen. Um auf anderen Geräten erfasste Datenpunkte abzurufen oder auf vergangene Benutzerdaten zuzugreifen (clientseitig erfasst, wenn Kameleoon im Hybridmodus verwendet wird), verwenden Sie die Methode getRemoteVisitorData(). Diese Methode ruft Daten asynchron von den Servern ab. Es ist wichtig, getRemoteVisitorData() vor dem Abrufen der Variation oder vor der Überprüfung, ob das feature flag aktiv ist, aufzurufen, da diese Daten möglicherweise erforderlich sind, um einem Benutzer eine bestimmte Variation zuzuweisen. Weitere Informationen zu den verfügbaren Targeting-Bedingungen finden Sie im detaillierten Artikel zum Thema. Darüber hinaus stehen die Datenpunkte, die Sie dem Besucherprofil hinzufügen, bei der Analyse Ihrer Experiments zur Verfügung, sodass Sie Ihre Ergebnisse nach Faktoren wie Gerät und Browser filtern und aufschlüsseln können. Der Kameleoon-Hybridmodus erfasst automatisch eine Vielzahl von Datenpunkten clientseitig, was es einfach macht, Ihre Ergebnisse basierend auf diesen vorab erfassten Datenpunkten aufzuschlüsseln. Die vollständige Liste finden Sie hier. Wenn Sie zusätzliche Datenpunkte verfolgen müssen, die über die automatisch erfassten hinausgehen, können Sie Kameleoons Custom Data-Funktion verwenden. Custom Data ermöglicht es Ihnen, spezifische Informationen zu erfassen und zu analysieren, die für Ihre Experiments relevant sind. Vergessen Sie nicht, die Methode flush() aufzurufen, um die gesammelten Daten zur Analyse an die Kameleoon-Server zu senden.
Um die Genauigkeit Ihrer Ergebnisse zu gewährleisten, wird empfohlen, Bots mithilfe des Datentyps UserAgent herauszufiltern.
Tracking von Ziel-Konvertierungen
Wenn ein Benutzer eine gewünschte Aktion abschließt (z. B. einen Kauf tätigt), wird dies als Konvertierung aufgezeichnet. Um Konvertierungen zu verfolgen, verwenden Sie die Methode trackConversion() und geben Sie die erforderlichen Parameter visitorCode und goalId an. Die Tracking-Anfrage für die Konvertierung wird zusammen mit der nächsten geplanten Tracking-Anfrage gesendet, die das SDK in regelmäßigen Abständen sendet (definiert in der Intervall-Tracking-crontab). Wenn Sie die Anfrage sofort senden möchten, verwenden Sie die Methode flush() mit dem Parameter instant=true.
Senden von Events an Analyselösungen
Um Konvertierungen zu verfolgen und Expositions-Events an Ihre Kundenanalyselösung zu senden, müssen Sie zunächst Kameleoon im Hybridmodus implementieren. Verwenden Sie dann die Methode getEngineTrackingCode(). Die Methode getEngineTrackingCode() ruft den eindeutigen Tracking-Code ab, der erforderlich ist, um Expositions-Events an Ihre Analyselösung zu senden. Die Verwendung dieser Methode ermöglicht es Ihnen, Events aufzuzeichnen und an Ihre gewünschte Analyseplattform zu senden.

Cross-Device-Experimentation

Um Besucher zu unterstützen, die von mehreren Geräten auf eine App zugreifen, ermöglicht Kameleoon die Synchronisierung zuvor erfasster Besucherdaten über die Geräte jedes Besuchers hinweg und die Abstimmung ihrer Besuchshistorie zwischen Geräten durch Cross-Device-Experimentation. Fallstudien und detaillierte Informationen darüber, wie Kameleoon Daten geräteübergreifend verarbeitet, finden Sie im Artikel zur Cross-Device-Experimentation.

Synchronisierung von Custom Data zwischen Geräten

Obwohl die Synchronisierung benutzerdefinierter Mappings verwendet wird, um Besucherdaten zwischen Geräten abzugleichen, ist sie nicht immer erforderlich. Im Folgenden sind zwei Szenarien aufgeführt, in denen die Synchronisierung benutzerdefinierter Mappings nicht erforderlich ist: Gleiche Benutzer-ID auf allen Geräten Wenn dieselbe Benutzer-ID konsistent auf allen Geräten verwendet wird, wird die Synchronisierung automatisch ohne eine benutzerdefinierte Mapping-Synchronisierung verarbeitet. Es genügt, die Methode getRemoteVisitorData() aufzurufen, wenn Sie die zwischen mehreren Geräten erfassten Daten synchronisieren möchten. Multi-Server-Instanzen mit konsistenten IDs In komplexen Setups mit mehreren Servern (z. B. verteilten Serverinstanzen), bei denen dieselbe Benutzer-ID auf allen Servern verfügbar ist, ist die Synchronisierung zwischen Servern (mit getRemoteVisitorData()) ausreichend, ohne zusätzliche benutzerdefinierte Mapping-Synchronisierung. Kunden, die zusätzliche Daten benötigen, finden weitere Informationen in der Beschreibung der Methode getRemoteVisitorData(). Im folgenden Code wird davon ausgegangen, dass derselbe eindeutige Identifikator (in diesem Fall der visitorCode, der auch als userId bezeichnet werden kann) konsistent zwischen den beiden Geräten verwendet wird, um eine genaue Datenabfrage zu gewährleisten.
Wenn Sie die erfassten Daten in Echtzeit synchronisieren möchten, müssen Sie den Geltungsbereich Visitor für Ihre Custom Data auswählen.
Device A
// In this example, Custom data with index `90` was set to "Visitor" scope on Kameleoon.
const VISITOR_SCOPE_CUSTOM_DATA_INDEX = 90;

$kameleoonClient->addData($visitorCode, new CustomData(VISITOR_SCOPE_CUSTOM_DATA_INDEX, "your data"));
$kameleoonClient->flush($visitorCode);
Device B
// Call the `getRemoteVisitorData` method before working with the data.
$kameleoonClient->getRemoteVisitorData($visitorCode);

// After the call, the SDK on Device B will have access to CustomData of Visitor scope defined on Device A.
// So, "your data" will be available to target and track the visitor.

Verwendung von Custom Data zum Zusammenführen von Sitzungen

Cross-Device-Experimentation ermöglicht es, die Historie eines Besuchers über alle seine Geräte hinweg zu kombinieren (Verlaufsabgleich). Der Verlaufsabgleich ermöglicht das Zusammenführen verschiedener Besuchersitzungen zu einer. Um die Besuchshistorie abzugleichen, verwenden Sie CustomData, um einen eindeutigen Identifikator für den Besucher bereitzustellen. Weitere Informationen finden Sie in der entsprechenden Dokumentation. Nachdem der Cross-Device-Abgleich aktiviert wurde, ruft der Aufruf von getRemoteVisitorData() mit dem Parameter userId alle bekannten Daten für einen bestimmten Benutzer ab. Sitzungen mit demselben Identifikator erhalten in einem Experiment immer dieselbe Variation. In der Besucheransicht der Ergebnisseiten Ihres Experiments erscheinen diese Sitzungen als ein einzelner Besucher. Die SDK-Konfiguration stellt sicher, dass zugehörige Sitzungen immer dieselbe Variation des Experiments sehen. Es gibt jedoch einige Einschränkungen hinsichtlich der Cross-Device-Variationszuweisung. Diese Einschränkungen sind hier beschrieben. Folgen Sie der Anleitung zur Aktivierung des Cross-Device-Verlaufsabgleichs, um Ihre Custom Data auf der Kameleoon-Plattform einzurichten. Anschließend können Sie das SDK normal verwenden. Die folgenden Methoden können im Kontext der Sitzungszusammenführung hilfreich sein:
  • getRemoteVisitorData() mit hinzugefügtem UniqueIdentifier(true) - um Daten für alle verknüpften Besucher abzurufen.
  • trackConversion() oder flush() mit hinzugefügten UniqueIdentifier(true)-Daten - um bestimmte Daten für einen bestimmten Besucher zu verfolgen, der mit einem anderen Besucher verknüpft ist.
Da die Custom Data, die Sie als Identifikator verwenden, auf den Visitor-Geltungsbereich gesetzt werden müssen, müssen Sie die Cross-Device-Custom-Data-Synchronisierung verwenden, um den Identifikator mit der Methode getRemoteVisitorData() auf jedem Gerät abzurufen.
Hier ist ein Beispiel dafür, wie Custom Data zum Zusammenführen von Sitzungen verwendet wird.
// In this example, `91` represents the Custom Data's index
// configured as a unique identifier in Kameleoon.
const MAPPING_INDEX = 91;
const FEATURE_KEY = "ff123";

// 1. Before the visitor is authenticated

// Retrieve the variation for an unauthenticated visitor.
// Assume `anonymousVisitorCode` is the randomly generated ID for that visitor.
$anonymousVariation = $kameleoonClient->getVariation($anonymousVisitorCode, FEATURE_KEY);

// 2. After the visitor is authenticated

// Assume `userId` is the authenticates visitor's visitor code.
$kameleoonClient->addData($anonymousVisitorCode, new CustomData(MAPPING_INDEX, $userId));
$kameleoonClient->flush($anonymousVisitorCode, null, null, true);

// Indicate that `userId` is a unique identifier.
$kameleoonClient->addData($userId, new UniqueIdentifier(true));

// 3. After the visitor has been authenticated

// Retrieve the variation for the `userId`, which will match the anonymous visitor code's variation.
$userVariation = $kameleoonClient->getVariation($userId, FEATURE_KEY);
$isSameVariation = $userVariation->key == $anonymousVariation->key; // true

// The `userId` and `anonymousVisitorCode` are now linked and tracked as a single visitor.
$kameleoonClient->trackConversion($userId, 123, 10.0);

// Additionally, the linked visitors will share all fetched remote visitor data.
$kameleoonClient->getRemoteVisitorData($userId);
In diesem Beispiel hat die Anwendung eine Anmeldeseite. Da die Benutzer-ID zum Zeitpunkt der Anmeldung unbekannt ist, wird ein anonymer Besucheridentifikator verwendet, der von der Methode getVisitorCode() generiert wird. Nachdem sich der Benutzer angemeldet hat, wird der anonyme Besucher mit der Benutzer-ID verknüpft und als eindeutiger Identifikator für den Besucher verwendet.

Verwendung eines benutzerdefinierten Bucketing-Schlüssels

Standardmäßig verwendet Kameleoon eine eindeutige, anonyme Besucher-ID (visitorCode), um Benutzer feature flag-Variationen zuzuweisen. Diese ID wird normalerweise auf dem Gerät des Benutzers generiert und gespeichert (in einem Browser-Cookie für client- und serverseitige SDKs — in persistentem Speicher für mobile SDKs). In bestimmten Szenarien müssen Sie jedoch möglicherweise sicherstellen, dass alle Benutzer derselben Organisation dieselbe Variante eines feature flags sehen. Die Option Benutzerdefinierter Bucketing-Schlüssel ermöglicht es Ihnen, dieses Standardverhalten zu überschreiben, indem Sie Ihren eigenen benutzerdefinierten Identifikator für das Bucketing bereitstellen. Diese Überschreibung stellt sicher, dass die Zuweisungslogik von Kameleoon Ihren angegebenen Schlüssel anstelle des Standard-visitorCode verwendet.

Anwendungsfälle

Die Verwendung eines benutzerdefinierten Bucketing-Schlüssels ist wesentlich, um Konsistenz und Genauigkeit in Ihren feature flag-Zuweisungen aufrechtzuerhalten, insbesondere in diesen Situationen:
  • Experiments auf Konto- oder Organisationsebene: Für B2B-Produkte oder Szenarien, in denen Sie alle Benutzer derselben Organisation derselben Variation zuweisen möchten, können Sie einen Identifikator wie accountId verwenden. Benutzerdefinierte Bucketing-Schlüssel sind entscheidend für A/B test von Funktionen, die ein ganzes Team oder Unternehmen betreffen.
Durch die Implementierung eines benutzerdefinierten Bucketing-Schlüssels gewährleisten Sie eine höhere Konsistenz und Genauigkeit in Ihren Experiments, was zu zuverlässigeren Ergebnissen und einer besseren Benutzererfahrung führt.

Technische Details

Wenn Sie einen benutzerdefinierten Bucketing-Schlüssel für ein feature flag konfigurieren, stellen Sie Kameleoon einen bestimmten Identifikator aus den Daten Ihrer Anwendung zur Verfügung:
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\CustomData(1, "newVisitorCode"));
  • Bereitstellung des benutzerdefinierten Schlüssels: Sie stellen dem Kameleoon SDK Ihren benutzerdefinierten Identifikator mit der Methode addData() bereit. In dieser Methode übergeben Sie Ihren ausgewählten benutzerdefinierten Bucketing-Schlüssel als CustomData-Objekt. Hier bezieht sich newVisitorCode auf den Identifikator, den Sie für Ihr Bucketing verwenden möchten (z. B. die neue userId oder accountId).
Damit der benutzerdefinierte Bucketing-Schlüssel ordnungsgemäß funktioniert, muss er auch für das feature flag während des Erstellungs- oder Bearbeitungsprozesses des Flags definiert und konfiguriert werden. Ohne diese entsprechende Konfiguration wendet das Bucketing des SDK Ihren benutzerdefinierten Schlüssel nicht an. Detaillierte Anweisungen zur Einrichtung in Kameleoon finden Sie in diesem Artikel.
  • Bucketing-Logik: Sobald ein benutzerdefinierter Bucketing-Schlüssel über die Methode addData() bereitgestellt wird, verwenden alle Hash-Berechnungen für die Zuweisung von Benutzern zu Variationen diesen newVisitorCode (Ihren benutzerdefinierten Schlüssel) anstelle des Standard-visitorCode. Die Verwendung des newVisitorCode bedeutet, dass die Bucketing-Entscheidung an Ihren benutzerdefinierten Identifikator gebunden ist, was konsistente Zuweisungen in verschiedenen Kontexten gewährleistet, in denen dieser Identifikator vorhanden ist.
  • Daten-Tracking und Analytics: Es ist wichtig zu beachten, dass, obwohl der newVisitorCode (Ihr benutzerdefinierter Schlüssel) für Bucketing-Entscheidungen verwendet wird, alle nachfolgenden Daten (z. B. Tracking-Events und Konvertierungen) gesendet und mit dem ursprünglichen visitorCode verknüpft werden. Diese Trennung stellt sicher, dass Ihre Analytics individuelle Benutzerreisen und Interaktionen im breiteren Kontext Ihres Experiments genau widerspiegeln, auch wenn das Bucketing auf einer höheren Ebene (wie einem Konto) oder über mehrere Geräte/Sitzungen hinweg durchgeführt wird. Ihre ursprünglichen Besucherdaten bleiben für umfassende Berichte intakt.

Technische Anforderungen

Um einen benutzerdefinierten Bucketing-Schlüssel effektiv zu verwenden:
  • Der Schlüssel muss ein string sein.
  • Er muss für die Entität, die Sie bucketieren möchten, eindeutig sein (z. B. wenn Sie eine userId verwenden, sollte die ID jedes Benutzers eindeutig sein).
  • Der Schlüssel muss dem SDK genau zu dem Zeitpunkt zur Verfügung stehen, an dem die feature flag-Entscheidung für diesen Benutzer oder diese Anfrage ausgewertet wird.

Targeting-Bedingungen

Die Kameleoon SDKs unterstützen eine Vielzahl vordefinierter Targeting-Bedingungen, mit denen Sie Benutzer in Ihren Kampagnen ansprechen können. Eine Liste der Bedingungen, die dieses SDK unterstützt, finden Sie unter Besuchsverlauf für das Targeting von Benutzern verwenden. Sie können auch Ihre eigenen externen Daten zum Targeting von Benutzern verwenden.

Logging

Das SDK generiert Logs, um verschiedene interne Prozesse und Probleme widerzuspiegeln.

Log-Level

Das SDK unterstützt die Konfiguration der Begrenzung des Loggings nach einem Log-Level.
use Kameleoon\logging\KameleoonLogger;
use Kameleoon\logging\LogLevel;

// The `NONE` log level does not allow logging.
KameleoonLogger::setLogger(LogLevel::NONE);

// The `ERROR` log level only allows logging issues that may affect the SDK's primary behavior.
KameleoonLogger::setLogger(LogLevel::ERROR);

// The `WARNING` log level allows logging issues which may require additional attention.
// It extends the `ERROR` log level.
// The `WARNING` log level is a default log level.
KameleoonLogger::setLogger(LogLevel::WARNING);

// The `INFO` log level allows logging general information on the SDK's internal processes.
// It extends the `WARNING` log level.
KameleoonLogger::setLogger(LogLevel::INFO);

// The `DEBUG` level logs additional details about the SDK’s internal processes and extends the `INFO` level
// with more granular. diagnostic output.
// This information is not intended for end-user interpretation but can be sent to our support team
// to assist with internal troubleshooting.
KameleoonLogger::setLogger(LogLevel::DEBUG);

Benutzerdefinierte Verarbeitung von Logs

Das SDK schreibt seine Logs standardmäßig in die Konsolenausgabe. Dieses Verhalten kann überschrieben werden.
Die Begrenzung des Loggings nach einem Log-Level erfolgt unabhängig von der Logverarbeitungslogik.
use Kameleoon\logging\KameleoonLogger;
use Kameleoon\logging\Logger;
use Kameleoon\logging\LogLevel;
use Monolog\Logger as MonologLogger;

public class CustomLogger implements Logger {
    // Monolog logger
    private MonologLogger $inner;

    public function __construct(MonologLogger $inner)
    {
        $this->inner = $inner;
    }

    // `log` method accepts logs from the SDK
    public function log($level, string $message): void
    {
        // Custom log handling logic here. For example:
        switch ($level) {
            case LogLevel::ERROR:
                $this->inner->error($message);
                break;
            case LogLevel::WARNING:
                $this->inner->warning($message);
                break;
            case LogLevel::INFO:
                $this->inner->info($message);
                break;
            case LogLevel::DEBUG:
                $this->inner->debug($message);
                break;
        }
    }
}


// Log level filtering is applied separately from log handling logic.
// The custom logger will only accept logs that meet or exceed the specified log level.
// Ensure the log level is set correctly.
KameleoonLogger::setLogLevel(LogLevel::DEBUG); // Optional; defaults to `LogLevel::WARNING`.
KameleoonLogger::setLogger(new CustomLogger($inner));

Reference

Dies ist eine vollständige Referenzdokumentation des PHP SDK.

Initialisierung

create()

Diese Methode in Kameleoon\KameleoonClientFactory erstellt eine KameleoonClient-Instanz, indem Sie Ihre SDK-Konfiguration in einer Konfigurationsdatei bereitstellen. Sie müssen das SDK initialisieren, indem Sie diese Instanz von KameleoonClient erstellen, bevor Sie andere SDK-Methoden verwenden können. Alle Interaktionen mit dem SDK verwenden diese KameleoonClient-Instanz. Um die Konfiguration stattdessen als KameleoonClientConfig-Objekt bereitzustellen, lesen Sie die Methode createWithConfig.
require "vendor/autoload.php";

use Kameleoon\KameleoonClientFactory;
use Kameleoon\Exception\ConfigCredentialsInvalid;
use Kameleoon\Exception\KameleoonException;
use Kameleoon\Exception\SiteCodeIsEmpty;

$siteCode = "a8st4f59bj";

try {
    // Read from default configuration path: "/tmp/kameleoon/php-client/"
    $kameleoonClient = KameleoonClientFactory::create($siteCode);
} catch (SiteCodeIsEmpty $ex) {
    // indicates that provided site code is empty
} catch (ConfigCredentialsInvalid $ex) {
    // indicates that provided clientId / clientSecret are not valid
} catch (KameleoonException $ex) {
    // probably indicates that the SDK is unable to access the **Kameleoon working directory**
}

try {
    $kameleoonClient = KameleoonClientFactory::create($siteCode, "custom/file/path/client-php.json");
} catch (SiteCodeIsEmpty $ex) {
    // indicates that provided site code is empty
} catch (ConfigCredentialsInvalid $ex) {
    // indicates that provided clientId / clientSecret are not valid
} catch (KameleoonException $ex) {
    // probably indicates that the SDK is unable to access the **Kameleoon working directory**
}
Argumente
NameTypBeschreibung
siteCodeStringDies ist ein eindeutiger Schlüssel des Kameleoon-Projekts, das Sie mit dem SDK verwenden. Dieses Feld ist erforderlich.
configurationFilePathStringPfad zur SDK-Konfigurationsdatei. Dieses Feld ist optional und standardmäßig auf /tmp/kameleoon/client-php.json gesetzt.
Rückgabewert
TypBeschreibung
Kameleoon\KameleoonClientEine Instanz der Klasse KameleoonClient, die zum Verwalten Ihrer Experiments und feature flags verwendet wird.
Ausgelöste Ausnahmen
TypBeschreibung
SiteCodeIsEmptyAusnahme, die anzeigt, dass die angeforderten Zugangsdaten nicht bereitgestellt wurden (entweder über die Konfigurationsdatei oder über den config-Parameter der Methode).
ConfigCredentialsInvalidAusnahme, die anzeigt, dass die angeforderten Zugangsdaten nicht bereitgestellt wurden (entweder über die Konfigurationsdatei oder über den config-Parameter der Methode).
KameleoonExceptionAusnahme, die möglicherweise anzeigt, dass das SDK nicht auf das Kameleoon-Arbeitsverzeichnis zugreifen kann.

createWithConfig()

Diese Methode in Kameleoon\KameleoonClientFactory erstellt eine KameleoonClient-Instanz und ermöglicht es Ihnen, Ihre SDK-Konfiguration in einem KameleoonClientConfig-Objekt zu übergeben. Sie müssen das SDK initialisieren, indem Sie diese KameleoonClient-Instanz erstellen, bevor Sie andere SDK-Methoden verwenden können. Alle Interaktionen mit dem SDK verwenden diese KameleoonClient-Instanz. Um Ihre SDK-Konfiguration stattdessen in einer Datei bereitzustellen, verwenden Sie die Methode create.
require "vendor/autoload.php";

use Kameleoon\KameleoonClientConfig;
use Kameleoon\KameleoonClientFactory;
use Kameleoon\Exception\ConfigCredentialsInvalid;
use Kameleoon\Exception\KameleoonException;
use Kameleoon\Exception\SiteCodeIsEmpty;

$siteCode = "a8st4f59bj";

try {
    $cookieOptions = KameleoonClientConfig::createCookieOptions(
        "example.com", // domain: optional, but strictly recommended
        false, // secure: optional (false by default)
        false, // httponly: optional (false by default)
        "Lax" // samesite: optional (Lax by default)
    );
    $config = new KameleoonClientConfig(
        "<clientId>", // clientId: mandatory
        "<clientSecret>", // clientSecret: mandatory
        "/tmp/kameleoon/php-client/", // kameleoonWorkDir: optional / ("/tmp/kameleoon/php-client/" by default)
        60, // refreshIntervalMinute: in minutes, optional (60 minutes by default)
        10_000, // defaultTimeoutMillisecond: in milliseconds, optional (10_000 ms by default)
        false, // debugMode: optional (false by default)
        $cookieOptions, // cookieOptions: optional
        "development", // environment: optional ("production" by default)
        "example.com", // networkDomain: optional (null by default)
        1024*1024, // requestBodySizeLimitBytes: optional (2560 * 1024 by default)
    );
    $kameleoonClient = KameleoonClientFactory::create($siteCode, $config);
} catch (SiteCodeIsEmpty $ex) {
    // indicates that provided site code is empty
} catch (ConfigCredentialsInvalid $ex) {
    // indicates that provided clientId / clientSecret are not valid
} catch (KameleoonException $ex) {
    // probably indicates that the SDK is unable to access the **Kameleoon working directory**
}
Argumente
NameTypBeschreibung
siteCodeStringCode der Website, auf der Sie Experiments ausführen möchten. Diese eindeutige Code-ID finden Sie in der Kameleoon-App. Dieses Feld ist erforderlich.
kameleoonConfigKameleoonClientConfigKonfigurations-SDK-Objekt, das Sie übergeben. Dieses Feld ist optional.
Rückgabewert
TypBeschreibung
KameleoonClientEine Instanz der Klasse KameleoonClient, die Sie zum Verwalten Ihrer Experiments und feature flags verwenden.
Ausgelöste Ausnahmen
TypBeschreibung
SiteCodeIsEmptyAusnahme, die anzeigt, dass die angeforderten Zugangsdaten nicht bereitgestellt wurden (entweder über die Konfigurationsdatei oder über den config-Parameter der Methode).
ConfigCredentialsInvalidAusnahme, die anzeigt, dass die angeforderten Zugangsdaten nicht bereitgestellt wurden (entweder über die Konfigurationsdatei oder über den config-Parameter der Methode).
KameleoonExceptionAusnahme, die möglicherweise anzeigt, dass das SDK nicht auf das Kameleoon-Arbeitsverzeichnis zugreifen kann.

Feature flags und Variationen

isFeatureActive()

  • 📨 Sendet Tracking-Daten an Kameleoon (abhängig vom Parameter track)
Diese Methode hieß zuvor activateFeature und wurde in der SDK-Version 4.0.0 entfernt.
Diese Methode nimmt einen visitorCode und einen featureKey als erforderliche Argumente, um zu prüfen, ob das angegebene Feature für einen bestimmten Benutzer aktiv ist. Wenn ein solcher Benutzer noch nie mit diesem feature flag verknüpft wurde, gibt das SDK zufällig einen booleschen Wert zurück (true, wenn der Benutzer dieses Feature haben sollte, oder false, wenn nicht). Wenn ein Benutzer mit einem bestimmten visitorCode bereits mit diesem feature flag registriert ist, wird der vorherige FeatureFlag-Wert erkannt. Sie müssen sicherstellen, dass in Ihrem Code eine ordnungsgemäße Fehlerbehandlung eingerichtet ist, wie im Beispiel rechts gezeigt, um potenzielle Ausnahmen abzufangen. Wenn Sie einen visitorCode angeben, verwendet die Methode isFeatureActive() diesen als eindeutigen Besucheridentifikator, was für Cross-Device-Experimentation nützlich ist. Wenn Sie einen visitorCode angeben und den Parameter isUniqueIdentifier auf true setzen, verknüpft das SDK die gesendeten Daten mit dem Besucher, der dem angegebenen Identifikator zugeordnet ist.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen bitte UniqueIdentifier.isUniqueIdentifier kann auch in anderen Sonderfällen nützlich sein, z. B. wenn Sie nicht auf den anonymen visitorCode zugreifen können, der dem Besucher ursprünglich zugewiesen wurde, aber Zugriff auf eine interne ID haben, die mit dem anonymen Besucher über die Funktionen zur Sitzungszusammenführung verbunden ist.
Kameleoon verwendet Tracking, um Sitzungen und Besucher zu zählen, wenn Sie bestimmte Methoden wie isFeatureActive(), getVariation() oder getVariations() aufrufen.Verwenden Sie den Standardwert true für den Parameter track, wenn Sie Besucher einer Variation aussetzen und sie zählen müssen. Setzen Sie den Parameter track nur dann auf false, wenn Sie diese Methoden aufrufen, bevor Sie Besucher aussetzen.Wenn Sie beispielsweise getVariations() aufrufen, um alle Variationen abzurufen, bevor Sie Besucher aussetzen, setzen Sie den Parameter track auf false. Diese Einstellung verhindert, dass Kameleoon eine Sitzung verfrüht zählt. Sie können das Tracking dann später auslösen, wenn Sie den Besucher explizit aussetzen.Kameleoon sendet Tracking-Daten standardmäßig jede Sekunde. Sie können dieses Intervall mithilfe der Konfigurationsoption für das Tracking-Intervall auf bis zu fünf Sekunden konfigurieren. Kameleoon gruppiert Tracking-Events in einer einzigen Sitzung, solange das Intervall zwischen den Events weniger als 30 Minuten beträgt. Wenn zwischen Tracking-Events mehr als 30 Minuten vergehen, zählt Kameleoon die Events als separate Sitzungen. Ein Besuch erscheint 30 Minuten nach dem letzten aufgezeichneten Event in der Sitzung in Ihren Berichten.
$visitorCode = $kameleoonClient->getVisitorCode();
$featureKey = "new_checkout";
$hasNewCheckout = false;

try {
    $hasNewCheckout = $kameleoonClient->isFeatureActive($visitorCode, $featureKey, $timeout);
    // disabling tracking
    $hasNewCheckout = $kameleoonClient->isFeatureActive($visitorCode, $featureKey, $timeout, null, false);
} catch (Kameleoon\Exception\FeatureNotFound $e) {
    // Feature toggle not yet activated on Kameleoon's side - we consider the feature inactive.
    $hasNewCheckout = false;
} catch (Kameleoon\Exception\VisitorCodeInvalid $e) {
    // VisitorCode, which you passed to a method, is invalid and can't be accepted.
} catch (Kameleoon\Exception\DataFileInvalid $e) {
    // It appears that the configuration has not been loaded and
    // there is no previously saved version of the configuration available.
} catch (Exception $e) {
    // This is a generic Exception handler which will handle all exceptions.
    echo "Exception: ",  $e->getMessage(), "\n";
}
if ($hasNewCheckout) {
    // Implement new checkout code here.
}
Die Methode isFeatureActive() wertet die ausgelieferte Variante aus, nicht den Status des Master-Flags. Wenn Sie Regeln ausschließen, verwendet die Methode den Standardzustand Then, for everyone else serve. Wenn Sie für diesen Standardzustand Off auswählen, gibt die Methode immer false zurück, auch wenn das Master-feature flag On ist.
Argumente
NameTypBeschreibung
visitorCodestringEindeutiger Identifikator des Benutzers. Dieses Feld ist erforderlich.
featureKeystringSchlüssel des Features, das Sie einem Benutzer aussetzen möchten. Dieses Feld ist erforderlich.
timeout?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Dieses Feld ist optional. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.
isUniqueIdentifier (Veraltet)?boolEin optionaler Parameter zur Angabe, ob der visitorCode ein eindeutiger Identifikator ist. Wenn nicht angegeben, ist der Standardwert null. Das Feld ist optional.
trackboolEin optionaler Parameter zum Aktivieren oder Deaktivieren des Trackings der Feature-Auswertung (standardmäßig true).
Rückgabewert
TypBeschreibung
boolWert des feature flags, der für einen bestimmten visitorCode registriert ist.
Ausgelöste Ausnahmen
TypBeschreibung
FeatureNotFoundAusnahme, die anzeigt, dass die angeforderte Feature-ID nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist normalerweise normal und bedeutet, dass das feature flag auf Kameleoon-Seite noch nicht aktiviert wurde (der Code, der das Feature implementiert, ist jedoch bereits auf der Seite der Webanwendung bereitgestellt).
VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene visitor code ungültig ist (leer oder länger als 255 Zeichen).
DataFileInvalidAusnahme, die anzeigt, dass die Konfiguration nicht geladen wurde und keine zuvor gespeicherte Version der Konfiguration verfügbar ist.

getVariation()

  • 📨 Sendet Tracking-Daten an Kameleoon (abhängig vom Parameter track)
Ruft die Variation ab, die einem bestimmten Besucher für ein bestimmtes feature flag zugewiesen wurde. Diese Methode nimmt einen visitorCode und einen featureKey als erforderliche Argumente. Das Argument track ist optional und standardmäßig auf true gesetzt. Sie gibt die zugewiesene Variation für den Besucher zurück. Wenn der Besucher mit keinen feature flag-Regeln verknüpft ist, gibt die Methode die Standard-Variation für das angegebene feature flag zurück. Stellen Sie sicher, dass in Ihrem Code eine ordnungsgemäße Fehlerbehandlung implementiert ist, um potenzielle Ausnahmen zu verwalten.
Die Standardvariation bezieht sich auf die Variation, die einem Besucher zugewiesen wird, wenn er keiner vordefinierten Bereitstellungsregel für ein feature flag entspricht. Mit anderen Worten, es handelt sich um die Fallback-Variation, die auf alle Benutzer angewendet wird, die nicht durch spezifische Regeln angesprochen werden. Sie wird als die Variation im Abschnitt „Then, for everyone else…” in einer Verwaltungsoberfläche dargestellt.
$featureKey = "new_checkout";

try {
    $variation = $kameleoonClient->getVariation($visitorCode, $featureKey);
    // disabling tracking
    $variation = $kameleoonClient->getVariation($visitorCode, $featureKey, false);
} catch (Kameleoon\Exception\FeatureNotFound $e) {
    // An error has occurred; the feature flag isn't found in the current configuration.
} catch (Kameleoon\Exception\FeatureEnvironmentDisabled $e) {
    // The feature flag is disabled for the environment.
} catch (Kameleoon\Exception\VisitorCodeInvalid $e) {
    // The visitor code you passed to the method is invalid and can't be accepted by the SDK.
}

// Fetch a variable value for the assigned variation
$title = $variation->variables["title"]->value;

switch ($variation->key) {
    case "on":
        // Main variation key is selected for visitorCode
        break;
    case "alternative_variation":
        // Alternative variation key
        break;
    default:
        // Default variation key
        break;
}
Argumente
NameTypBeschreibungStandard
visitorCode (erforderlich)stringEindeutiger Identifikator des Besuchers.
featureKey (erforderlich)stringSchlüssel des Features, das Sie einem Besucher aussetzen möchten.
track (optional)boolEin optionaler Parameter zum Aktivieren oder Deaktivieren des Trackings der Feature-Auswertung.true
Rückgabewert
TypBeschreibung
VariationEine zugewiesene Variation für einen bestimmten Besucher für ein bestimmtes feature flag.
Ausgelöste Ausnahmen
TypBeschreibung
VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene visitor code ungültig ist. Er ist entweder leer oder länger als 255 Zeichen.
FeatureNotFoundAusnahme, die anzeigt, dass der angeforderte feature key nicht in der internen Konfiguration des SDK gefunden wurde. Dies bedeutet normalerweise, dass das feature flag in der Kameleoon-App nicht aktiviert ist (der Code zur Implementierung des Features ist jedoch bereits in der Anwendung bereitgestellt).
FeatureEnvironmentDisabledAusnahme, die anzeigt, dass das feature flag für die aktuelle Umgebung des Besuchers deaktiviert ist (z. B. production, staging oder development).

getVariations()

  • 📨 Sendet Tracking-Daten an Kameleoon (abhängig vom Parameter track)
Ruft eine Map von Variation-Objekten ab, die einem bestimmten Besucher über alle feature flags hinweg zugewiesen sind. Diese Methode iteriert über alle verfügbaren feature flags und gibt die zugewiesene Variation für jedes mit dem angegebenen Besucher verknüpfte Flag zurück. Sie nimmt visitorCode als erforderliches Argument, während onlyActive und track optional sind.
  • Wenn onlyActive auf true gesetzt ist, gibt die Methode getVariations() feature flag-Variationen zurück, sofern der Benutzer nicht mit der off-Variation bucketiert ist.
  • Der Parameter track steuert, ob die Methode die Variationszuweisungen verfolgt oder nicht. Standardmäßig ist er auf true gesetzt. Wenn er auf false gesetzt ist, wird das Tracking deaktiviert.
Die zurückgegebene Map besteht aus feature flag keys als Schlüsseln und ihren entsprechenden Variation als Werten. Wenn für ein feature flag keine Variation zugewiesen ist, gibt die Methode die Standard-Variation für dieses Flag zurück. Eine ordnungsgemäße Fehlerbehandlung sollte implementiert sein, um potenzielle Ausnahmen zu verwalten.
Die Standardvariation bezieht sich auf die Variation, die einem Besucher zugewiesen wird, wenn er keiner vordefinierten Bereitstellungsregel für ein feature flag entspricht. Mit anderen Worten, es handelt sich um die Fallback-Variation, die auf alle Benutzer angewendet wird, die nicht durch spezifische Regeln angesprochen werden. Sie wird als die Variation im Abschnitt „Then, for everyone else…” in einer Verwaltungsoberfläche dargestellt.
try {
    $variations = $kameleoonClient->getVariations($visitorCode);
    // only active variations
    $variations = $kameleoonClient->getVariations($visitorCode, true);
    // disable tracking
    $variations = $kameleoonClient->getVariations($visitorCode, $onlyActive, false);
} catch (Kameleoon\Exception\VisitorCodeInvalid $e) {
    // Handle exception
}
Argumente
NameTypBeschreibungStandard
visitorCode (erforderlich)stringEindeutiger Identifikator des Besuchers.
onlyActive (optional)boolEin optionaler Parameter, der angibt, ob Variationen für aktive (true) oder alle (false) feature flags zurückgegeben werden sollen.false
track (optional)boolEin optionaler Parameter zum Aktivieren oder Deaktivieren des Trackings der Feature-Auswertung.true
Rückgabewert
TypBeschreibung
array<string, Types\Variation>Map, die die zugewiesenen Variation-Objekte der feature flags enthält und die Schlüssel der entsprechenden Features verwendet.
Ausgelöste Ausnahmen
TypBeschreibung
VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene visitor code ungültig ist. Er ist entweder leer oder länger als 255 Zeichen.

setForcedVariation()

Die Methode ermöglicht es Ihnen, einem Benutzer programmgesteuert eine bestimmte Variation zuzuweisen und den Standard-Auswertungsprozess zu umgehen. Dies ist besonders wertvoll für kontrollierte Experiments, bei denen die übliche Auswertungslogik nicht erforderlich ist oder übersprungen werden muss. Es kann auch in Szenarien wie Debugging oder benutzerdefinierten Tests hilfreich sein. Wenn eine erzwungene Variation festgelegt wird, überschreibt sie die Echtzeit-Auswertungslogik von Kameleoon. Prozesse wie Segmentierung, Targeting-Bedingungen und algorithmische Berechnungen werden übersprungen. Um die Segmentierung und Targeting-Bedingungen während eines Experiments beizubehalten, setzen Sie stattdessen forceTargeting=false.
Simulierte Variationen haben in der Ausführungsreihenfolge immer Vorrang. Wenn eine simulierte Variationsberechnung ausgelöst wird, wird sie zuerst vollständig verarbeitet und abgeschlossen.
Eine erzwungene Variation wird genauso behandelt wie eine ausgewertete Variation. Sie wird in den Analytics verfolgt und wie jede standardmäßig ausgewertete Variation im Benutzerkontext gespeichert, was die Konsistenz in der Berichterstattung gewährleistet. Die Methode kann unter bestimmten Bedingungen Ausnahmen auslösen (z. B. ungültige Parameter, Benutzerkontext oder interne Probleme). Eine ordnungsgemäße Ausnahmebehandlung ist unerlässlich, um sicherzustellen, dass Ihre Anwendung stabil und widerstandsfähig bleibt.
Es ist wichtig, erzwungene Variationen von simulierten Variationen zu unterscheiden:
  • Erzwungene Variationen: Sind spezifisch für ein einzelnes Experiment.
  • Simulierte Variationen: Beeinflussen das Gesamtergebnis des feature flags.
$experimentId = 9516;
try {
    // Forcing the variation "on" for the experiment 9516 for the visitor
    $kameleoonClient->setForcedVariation($visitorCode, $experimentId, "on");

    // Forcing the variation "on" while preserving segmentation and targeting conditions during the experiment
    $kameleoonClient->setForcedVariation($visitorCode, $experimentId, "on", false);

    // Resetting the forced variation for the experiment 9516 for the visitor
    $kameleoonClient->setForcedVariation($visitorCode, $experimentId, null);
} catch (Kameleoon\Exception\KameleoonException $e) {
    // Handling the error
}
Argumente
NameTypBeschreibungStandard
visitorCode (erforderlich)stringEindeutiger Identifikator des Besuchers.
experimentId (erforderlich)intExperiment Id, das während des Auswertungsprozesses anvisiert und ausgewählt wird.
variationKey (erforderlich)?stringVariation Key, der einer Variation entspricht, die als zurückgegebener Wert für das Experiment erzwungen werden sollte. Wenn der Wert null ist, wird die erzwungene Variation zurückgesetzt.
forceTargeting (optional)boolGibt an, ob das Targeting für das Experiment erzwungen und übersprungen (true) oder wie im Standard-Auswertungsprozess (false) angewendet werden soll.true
timeout (optional)?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.null
Ausgelöste Ausnahmen
TypBeschreibung
VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene visitor code ungültig ist. Er ist entweder leer oder länger als 255 Zeichen.
FeatureExperimentNotFoundAusnahme, die anzeigt, dass die angeforderte experiment id nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist normalerweise normal und bedeutet, dass das der Regel entsprechende Experiment auf Kameleoon-Seite noch nicht aktiviert wurde.
FeatureVariationNotFoundAusnahme, die anzeigt, dass der angeforderte variation key (id) nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist normalerweise normal und bedeutet, dass das der Variation entsprechende Experiment auf Kameleoon-Seite noch nicht aktiviert wurde.
In den meisten Fällen muss nur der Basisfehler KameleoonException behandelt werden, wie im Beispiel gezeigt. Wenn jedoch verschiedene Arten von Fehlern eine Reaktion erfordern, behandeln Sie jeden basierend auf spezifischen Anforderungen separat. Darüber hinaus können für erhöhte Zuverlässigkeit allgemeine Sprachfehler durch das Einbeziehen von Exception behandelt werden.

evaluateAudiences()

  • 📨 Sendet Tracking-Daten an Kameleoon
Diese Methode wertet Besucher gegen alle verfügbaren Audiences Explorer-Segmente aus und verfolgt diejenigen, die übereinstimmen. evaluateAudiences() sollte aufgerufen werden, nachdem alle relevanten Besucherdaten gesetzt oder aktualisiert wurden und kurz bevor eine Feature-Variation abgerufen oder ein feature flag überprüft wird. Dieser Ansatz stellt sicher, dass der Besucher anhand der aktuellsten verfügbaren Daten ausgewertet wird, was eine genaue Zielgruppenzuordnung basierend auf allen Kriterien ermöglicht. Nach dem Aufrufen dieser Methode können Sie eine detaillierte Analyse der Segmentleistung im Audiences Explorer durchführen.
try {
    $kameleoonClient->evaluateAudiences($visitorCode);
} catch (Kameleoon\Exception\KameleoonException $e) {
    // Handling the exception
}
Argumente
NameTypBeschreibungStandard
visitorCode (erforderlich)stringEindeutiger Identifikator des Besuchers.
timeout (optional)?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.null
Ausgelöste Ausnahmen
TypBeschreibung
VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene visitor code ungültig ist. Er ist entweder leer oder länger als 255 Zeichen.
In den meisten Fällen muss nur der Basisfehler KameleoonException behandelt werden, wie im Beispiel gezeigt. Wenn jedoch verschiedene Arten von Fehlern eine Reaktion erfordern, behandeln Sie jeden basierend auf spezifischen Anforderungen separat. Darüber hinaus können für erhöhte Zuverlässigkeit allgemeine Sprachfehler durch das Einbeziehen von Exception behandelt werden.

getDataFile()

Um alle feature flags auszuwerten, verwenden Sie getVariations(). Diese Methode ist effizienter als der Aufruf von DataFile und das Iterieren durch die Flags mit getVariation().
Gibt die aktuelle SDK-Konfiguration als DataFile-Objekt zurück.
try {
    $dataFile = $kameleoonClient->getDataFile();
} catch (Kameleoon\Exception\KameleoonException $e) {
    // Recommended (but optional) safeguard for unexpected exceptions from third-party libraries
}
Argumente
NameTypBeschreibung
timeout (optional)?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.
Rückgabewert
TypBeschreibung
DataFileDas DataFile, das die SDK-Konfiguration enthält

Besucherdaten

getVisitorCode()

Diese Methode hieß zuvor obtainVisitorCode und wurde in der SDK-Version 4.0.0 entfernt.
Rufen Sie diese Methode auf, um den Kameleoon-visitorCode für den aktuellen Besucher zu erhalten. Der Aufruf ist besonders wichtig, wenn Kameleoon in einer gemischten Frontend- und Backend-Umgebung verwendet wird, in der die Konsistenz der Benutzeridentifikation gewährleistet sein muss. Die Implementierungslogik wird hier beschrieben:
  1. Zuerst prüfen wir, ob ein kameleoonVisitorCode-Cookie oder ein Query-Parameter mit der aktuellen HTTP-Anfrage verknüpft ist. Wenn ja, verwenden wir diesen als Besucheridentifikator.
  2. Wenn kein Cookie oder Parameter in der aktuellen Anfrage vorhanden ist, haben wir zwei Möglichkeiten, einen Identifikator zu generieren. Eine Option besteht darin, einen neuen Identifikator zufällig zu erstellen, und die andere darin, das Argument defaultVisitorCode zu verwenden, wenn es bereitgestellt wurde. Diese Funktion ermöglicht es unseren Kunden, ihre eigenen Identifikatoren als visitor codes einzugeben, was vorteilhaft sein kann; sie ordnet Kameleoon-Besucher nahtlos ihren eigenen Benutzern zu, sodass keine zusätzlichen Suchen in einer Zuordnungstabelle erforderlich sind.
  3. In jedem Fall wird das serverseitige (über HTTP-Header) kameleoonVisitorCode-Cookie mit dem Wert gesetzt. Die Methode gibt diesen Besucherwert zurück.
Weitere Informationen finden Sie in diesem Artikel.
Wenn Sie Ihren eigenen visitorCode bereitstellen, muss seine Eindeutigkeit auf Ihrer Seite garantiert werden — das SDK kann sie nicht prüfen. Beachten Sie auch, dass die Länge des visitorCode auf 255 Zeichen begrenzt ist. Überschüssige Zeichen lösen eine Ausnahme aus.
Die Methode getVisitorCode() ermöglicht es Ihnen, simulierte Variationen für einen Besucher festzulegen. Wenn Cookies (aus einer Anfrage oder einem Dokument) den Schlüssel kameleoonSimulationFFData enthalten, wird der Standard-Auswertungsprozess umgangen. Stattdessen gibt die Methode direkt eine Variation basierend auf den bereitgestellten Daten zurück.Sie können Simulationen auf zwei Arten anwenden:
  • Automatisch (empfohlen): Wenn Sie Kameleoon Web Experimentation oder das SDK im Hybridmodus verwenden, wird das Cookie automatisch erstellt, wenn Sie die Anzeige einer Variante mit dem Simulation Panel simulieren.
  • Manuell: Setzen Sie das kameleoonSimulationFFData-Cookie manuell.
Es ist wichtig, simulierte Variationen von erzwungenen Variationen zu unterscheiden:
  • Simulierte Variationen: Beeinflussen das Gesamtergebnis des feature flags.
  • Erzwungene Variationen: Sind spezifisch für ein einzelnes Experiment.
⚙️ Manuelle EinrichtungBitte stellen Sie sicher, dass das kameleoonSimulationFFData-Cookie das folgende Format hat:
  • kameleoonSimulationFFData={"featureKey":{"expId":10,"varId":20}}: Simuliert die Variation mit varId des Experiments expId für den angegebenen featureKey.
  • kameleoonSimulationFFData={"featureKey":{"expId":0}}: Simuliert die Standardvariation (definiert im Abschnitt Then, for everyone else in Production, serve) für den angegebenen featureKey.
⚠️ Um die ordnungsgemäße Funktionalität zu gewährleisten, muss der Cookie-Wert als URI-Komponente mit einer Methode wie encodeURIComponent codiert werden.
require "vendor/autoload.php";

// The cookie's domain must be provided in the configuration file if no argument is given.

$visitorCode = $kameleoonClient->getVisitorCode();

// default visitor code provided
$visitorCode = $kameleoonClient->getVisitorCode($defaultVisitorCode);
Argumente
NameTypBeschreibung
defaultVisitorCodeStringDieser Parameter wird als visitorCode verwendet, wenn in der Anfrage kein vorhandenes kameleoonVisitorCode-Cookie gefunden wird. Dieses Feld ist optional, und standardmäßig wird ein zufälliger visitorCode generiert.
timeout?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Dieses Feld ist optional. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.
Rückgabewert
TypBeschreibung
StringEin visitorCode, der diesem bestimmten Benutzer zugeordnet wird und mit den meisten Methoden des SDK verwendet werden sollte.
Ausgelöste Ausnahmen
TypBeschreibung
InvalidArgumentExceptionAusnahme, die anzeigt, dass der Wert der Cookie-Domain nicht bereitgestellt wurde (entweder über die Konfigurationsdatei oder über den topLevelDomain-Parameter der Methode).

addData()

Die Methode addData() fügt Targeting-Daten zum Speicher hinzu, damit andere Methoden die Daten verwenden können, um zu entscheiden, ob der aktuelle Besucher angesprochen werden soll oder nicht. Die Methode addData() gibt keinen Wert zurück und interagiert nicht selbstständig mit den Kameleoon-Backend-Servern. Stattdessen werden alle deklarierten Daten für die zukünftige Übertragung mit der Methode flush() gespeichert. Dieser Ansatz reduziert die Anzahl der ausgeführten Serveraufrufe, da die Daten typischerweise in einem einzigen Serveraufruf gruppiert werden, der durch flush() ausgelöst wird. Die Methode trackConversion() sendet ebenfalls alle zuvor zugeordneten Daten, genau wie flush(). Dasselbe gilt für die Methoden getVariation() und getVariations(), wenn eine Experimentationsregel ausgelöst wird.
Jeder Besucher kann für die meisten Datentypen nur eine Instanz zugehöriger Daten haben. CustomData bildet jedoch eine Ausnahme. Besucher können pro Index eine Instanz zugehöriger CustomData haben.
// Add a single data item (tracked by default)
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\Browser(Kameleoon\Data\Browser::CHROME));

// Add multiple data items (tracked by default)
$kameleoonClient->addData(
    $visitorCode,
    new Kameleoon\Data\PageView("https://url.com", "title", [3]),
    new Kameleoon\Data\UserAgent("UserAgent")
);

// Add multiple data items stored locally for targeting only (not sent to the Kameleoon Data API)
$kameleoonClient->addData(
    $visitorCode,
    false,
    new Kameleoon\Data\PageView("https://url.com", "title", [3]),
    new Kameleoon\Data\UserAgent("UserAgent")
);
Argumente
NameTypBeschreibungStandardwert
visitorCode (erforderlich)stringEindeutiger Identifikator des Besuchers.
track (optional)boolGibt an, ob die hinzugefügten Daten für das Tracking in Frage kommen. Wenn auf false gesetzt, werden die Daten lokal gespeichert und nur für die Targeting-Auswertung verwendet; sie werden nicht an die Kameleoon Data API gesendet.true
data (erforderlich)...DataSammlung der Kameleoon-Datentypen.
Ausnahmen
TypBeschreibung
VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene visitor code ungültig ist. Er ist entweder leer oder länger als 255 Zeichen.

flush()

  • 📨 Sendet Tracking-Daten an Kameleoon
Die Methode flush() ist für das Senden der Kameleoon-Daten verantwortlich, die mit einem bestimmten Besucher verknüpft sind. Sie löst eine Tracking-Anfrage aus, die alle zuvor mit der Methode addData hinzugefügten Daten enthält, die bei einem früheren Aufruf von einer der Methoden noch nicht gesendet wurden. flush() ist nicht blockierend, da der Serveraufruf asynchron erfolgt, es sei denn, der Parameter instant ist auf true gesetzt. Die Funktion flush() ermöglicht es Ihnen zu entscheiden, wann die mit einem bestimmten visitorCode verknüpften Daten an unsere Server gesendet werden. Wenn Sie beispielsweise addData() mehrmals aufrufen — sagen wir ein Dutzend Mal — wäre es ineffizient, bei jedem Aufruf Daten an den Server zu senden. Stattdessen können Sie zuerst alle Ihre Daten sammeln und dann am Ende einmal flush() aufrufen, um alles auf einmal zu senden. Wenn Sie einen visitorCode angeben, verwendet die Methode flush() diesen als eindeutigen Besucheridentifikator, was für Cross-Device-Experimentation nützlich ist. Wenn Sie einen visitorCode angeben und den Parameter isUniqueIdentifier auf true setzen, verknüpft das SDK die gesendeten Daten mit dem Besucher, der dem angegebenen Identifikator zugeordnet ist.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen bitte UniqueIdentifier.isUniqueIdentifier kann in einzigartigen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode zugreifen können, der einem Besucher zugewiesen wurde, aber eine interne ID verwenden können, die durch die Sitzungszusammenführung mit diesem Besucher verknüpft ist.
$visitorCode = $kameleoonClient->getVisitorCode();

$kameleoonClient->addData(
    $visitorCode,
    new Kameleoon\Data\Browser(Kameleoon\Data\Browser::CHROME).
    new Kameleoon\Data\PageView("https://url.com", "title", array(3)),
    new Kameleoon\Data\Conversion(32, 10, false)
);

$kameleoonClient->flush($visitorCode); // Interval tracking, non-blocking operation

$kameleoonClient->flush($visitorCode, null, null, true); // Instant tracking, blocking operation

// if you operate with unique ID
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\UniqueIdentifier(true));
$kameleoonClient->flush($visitorCode);
Argumente
NameTypBeschreibung
visitorCodestringEindeutiger Identifikator des Benutzers. Dieses Feld ist erforderlich.
timeout?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Dieses Feld ist optional. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.
isUniqueIdentifier (Veraltet)?boolEin optionaler Parameter zur Angabe, ob der visitorCode ein eindeutiger Identifikator ist. Wenn nicht angegeben, ist der Standardwert null. Das Feld ist optional.
instantboolBoolesches Flag, das angibt, ob die Daten sofort gesendet werden sollen (true) oder gemäß dem geplanten Tracking-Intervall (false). Wenn nicht angegeben, ist der Standardwert false. Dieses Feld ist optional.

getRemoteData()

Diese Methode hieß zuvor retrieveDataFromRemoteSource und wurde in der SDK-Version 4.0.0 entfernt.
Die Methode getRemoteData() ermöglicht es Ihnen, Daten basierend auf einem Schlüssel abzurufen, den Sie für einen bestimmten siteCode (in KameleoonClientFactory.create() festgelegt) bereitstellen. Ein Kameleoon-Server speichert diese Daten. Die Data API wird normalerweise verwendet, um diese Daten auf unseren Remote-Servern zu speichern. Diese Methode in Kombination mit unseren skalierbaren Servern macht das Speichern großer Datenmengen einfach. Sie können dann später für jeden Besucher oder Benutzer auf diese Daten zugreifen.
$test_value = $kameleoonClient->getRemoteData("test"); // default timeout will be used

$test_value = $kameleoonClient->getRemoteData("test", 1000); // 1000 milliseconds timeout

try {
    $test_value = $kameleoonClient->getRemoteData("test");
} catch (Exception $e) {
    // Timeout or Json Decoding Exception
}
Argumente
NameTypBeschreibung
keystringDer Schlüssel, dem die Daten zugeordnet sind, die Sie abrufen möchten. Dieses Feld ist erforderlich.
timeout?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Dieses Feld ist optional. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.
Rückgabewert
TypBeschreibung
ObjectObjekt, das mit dem Abrufen von Daten für einen bestimmten Schlüssel verknüpft ist.
Ausgelöste Ausnahmen
TypBeschreibung
ExceptionAusnahme, die anzeigt, dass die Anfrage abgelaufen ist oder die abgerufenen Daten nicht mit der Methode json_decode decodiert werden können.

getRemoteVisitorData()

getRemoteVisitorData() ist eine asynchrone Methode zum Abrufen von Kameleoon Visits Data für den visitorCode aus der Kameleoon Data API. Die Methode fügt Daten zum Speicher hinzu, damit andere Methoden sie bei Targeting-Entscheidungen verwenden können. Mit dieser Methode abgerufene Daten spielen eine wichtige Rolle, wenn Sie:
  • Daten verwenden möchten, die von anderen Geräten erfasst wurden.
  • auf die Historie eines Benutzers zugreifen möchten, z. B. zuvor besuchte Seiten bei früheren Besuchen.
  • Daten verwenden möchten, die nur clientseitig zugänglich sind, wie z. B. datalayer-Variablen und Ziele, die nur im Frontend konvertieren.
Lesen Sie diesen Artikel für ein besseres Verständnis möglicher Anwendungsfälle.
Standardmäßig ruft getRemoteVisitorData() automatisch die zuletzt gespeicherten Custom Data mit scope=Visitor ab und fügt sie dem Besucher hinzu, ohne dass die Methode addData() aufgerufen werden muss. Dies ist besonders nützlich für die Synchronisierung von Custom Data zwischen mehreren Geräten.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen bitte UniqueIdentifier.isUniqueIdentifier kann in einzigartigen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode zugreifen können, der einem Besucher zugewiesen wurde, aber eine interne ID verwenden können, die durch die Sitzungszusammenführung mit diesem Besucher verknüpft ist.
$visitorCode = "visitorCode";

// Visitor data will be fetched and automatically added for `visitorCode`
$dataArray = $kameleoonClient->getRemoteVisitorData($visitorCode, null); // default timeout will be used
$dataArray = $kameleoonClient->getRemoteVisitorData($visitorCode, 1000); // 1000 milliseconds timeout

// If you only want to fetch data and add it yourself manually, set shouldAddData == `false`
$dataArray = $kameleoonClient->getRemoteVisitorData($visitorCode, null, false); // default timeout will be used
$dataArray = $kameleoonClient->getRemoteVisitorData($visitorCode, 1000, false); // 1000 milliseconds timeout
Argumente
NameTypBeschreibung
visitorCodestringDer visitor code, für den Sie die zugewiesenen Daten abrufen möchten. Dieses Feld ist erforderlich.
timeout?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Dieses Feld ist optional. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.
addDataboolEin boolescher Wert, der angibt, ob die Methode die abgerufenen Daten automatisch für einen Besucher hinzufügen soll. Wenn nicht angegeben, ist der Standardwert true. Dieses Feld ist optional.
filterKameleoon\Types\RemoteVisitorDataFilterFilter zur Angabe, welche Daten aus den Besuchen abgerufen werden sollen. Standardmäßig werden nur CustomData aus dem aktuellen und dem letzten vorherigen Besuch abgerufen (new RemoteVisitorDataFilter(1, true, true) oder new RemoteVisitorDataFilter()). Andere Filterparameter sind auf false gesetzt. Dieses Feld ist optional.
isUniqueIdentifier (Veraltet)?boolEin optionaler Parameter zur Angabe, ob der visitorCode ein eindeutiger Identifikator ist. Wenn nicht angegeben, ist der Standardwert null. Das Feld ist optional.
Rückgabewert
TypBeschreibung
array<Kameleoon\Data>Eine Liste von Daten, die dem angegebenen Besucher zugewiesen sind.
Verwendung von Parametern in getRemoteVisitorData()
Die Methode getRemoteVisitorData() bietet Flexibilität, indem Sie verschiedene Parameter beim Abrufen von Daten zu Besuchern definieren können. Egal, ob Sie auf Basis von Zielen, Experiments oder Variationen zielen, der gleiche Ansatz gilt für alle Datentypen. Angenommen, Sie möchten Daten zu Besuchern abrufen, die ein Ziel „Order transaction” abgeschlossen haben. Sie können Parameter innerhalb der Methode getRemoteVisitorData() angeben, um Ihr Targeting zu verfeinern. Wenn Sie beispielsweise nur Benutzer ansprechen möchten, die das Ziel in ihren letzten fünf Besuchen konvertiert haben, können Sie den Parameter previousVisitAmount auf 5 und conversions auf true setzen. Die in diesem Beispiel gezeigte Flexibilität ist nicht auf Zieldaten beschränkt. Sie können Parameter innerhalb der Methode getRemoteVisitorData() verwenden, um Daten zu einer Vielzahl von Besucherverhaltensweisen abzurufen.
Hier ist die Liste der verfügbaren Kameleoon\Types\RemoteVisitorDataFilter-Optionen:
NameTypBeschreibungStandard
previousVisitAmount (optional)intAnzahl der vorherigen Besuche, von denen Daten abgerufen werden sollen. Zahl zwischen 1 und 251
currentVisit (optional)boolWenn true, werden Daten des aktuellen Besuchs abgerufentrue
customData (optional)boolWenn true, werden Custom Data abgerufen.true
pageViews (optional)boolWenn true, werden Seitendaten abgerufen.false
geolocation (optional)boolWenn true, werden Geolokalisierungsdaten abgerufen.false
device (optional)boolWenn true, werden Gerätedaten abgerufen.false
browser (optional)boolWenn true, werden Browserdaten abgerufen.false
operatingSystem (optional)boolWenn true, werden Betriebssystemdaten abgerufen.false
conversions (optional)boolWenn true, werden Konvertierungsdaten abgerufen.false
experiments (optional)boolWenn true, werden Experiment-Daten abgerufen.false
kcs (optional)boolWenn true, wird der Kameleoon Conversion Score (KCS) abgerufen. Erfordert das AI Predictive Targeting Add-onfalse
visitorCode (optional)boolWenn true, ruft Kameleoon den visitorCode aus dem letzten Besuch ab und verwendet ihn für den aktuellen Besuch. Dies ist notwendig, wenn Sie sicherstellen möchten, dass der Besucher, identifiziert durch seinen visitorCode, bei Besuchen für Cross-Device-Experimentation immer dieselbe Variation erhält.true
cbs (optional)boolWenn true, werden Contextual Bandit-Score-Daten abgerufen.false
personalization (optional)boolWenn true, werden Personalisierungsdaten abgerufen. Dies ist für die Personalisierungsbedingung erforderlich.false

getVisitorWarehouseAudience()

Diese Methode ruft alle Audience-Daten ab, die dem Besucher in Ihrem Data Warehouse mit dem angegebenen visitorCode und warehouseKey zugeordnet sind. Der warehouseKey ist normalerweise Ihre interne Benutzer-ID. Der Parameter customDataIndex entspricht den Kameleoon Custom Data, die Kameleoon zum Targeting Ihrer Besucher verwendet. Weitere Informationen finden Sie in der Dokumentation zum Warehouse-Targeting. Die Methode übergibt das Ergebnis an das zurückgegebene Future als CustomData-Objekt und bestätigt, dass die Daten dem Besucher hinzugefügt wurden und für Targeting-Zwecke verfügbar sind.
$warehouseAudienceCustomData = $kameleoonClient->getVisitorWarehouseAudience($visitorCode, $customDataIndex);

// If you need to specify warehouse key
$warehouseAudienceCustomData = $kameleoonClient->getVisitorWarehouseAudience(
    $visitorCode, $customDataIndex, $warehouseKeyValue
);

// If you need to specify warehouse key & timeout
$warehouseAudienceCustomData = $kameleoonClient->getVisitorWarehouseAudience(
    $visitorCode, $customDataIndex, $warehouseKeyValue, 2000
);
Argumente
NameTypBeschreibung
visitorCodestringDer eindeutige Identifikator des Besuchers, für den Sie die Daten abrufen und hinzufügen möchten.
customDataIndexintEin Integer, der den Index der Custom Data darstellt, die Sie zum Targeting Ihrer BigQuery Audiences verwenden möchten.
warehouseKeystringDer eindeutige Schlüssel zur Identifizierung der Warehouse-Daten (normalerweise Ihre interne Benutzer-ID). Dieses Feld ist optional.
timeout?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Dieses Feld ist optional. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.
Rückgabewert
TypBeschreibung
?CustomdataCustomData-Instanz, die bestätigt, dass die Daten dem Besucher hinzugefügt wurden. Wenn der Wert null ist, ist die Anfrage fehlgeschlagen und CustomData wurde nicht zum Besucher hinzugefügt.
Ausgelöste Ausnahmen
TypBeschreibung
VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene visitor code ungültig ist (leer oder länger als 255 Zeichen).

setLegalConsent()

Sie müssen diese Methode verwenden, um anzugeben, ob der Besucher seine rechtliche Einwilligung zur Verwendung seiner personenbezogenen Daten gegeben hat. Das Setzen des Parameters legalConsent auf false beschränkt die Arten von Daten, die Sie in Tracking-Anfragen einbeziehen können. Diese Methode hilft Ihnen dabei, gesetzliche und regulatorische Anforderungen einzuhalten und gleichzeitig Besucherdaten verantwortungsvoll zu verwalten. Weitere Informationen zu personenbezogenen Daten finden Sie in der Consent Management Policy.
$visitorCode = $kameleoonClient->getVisitorCode();
$kameleoonClient->setLegalConsent($visitorCode, true);
Argumente
NameTypBeschreibung
visitorCodestringDer eindeutige Identifikator des Benutzers. Dieses Feld ist erforderlich.
legalConsentboolEin boolescher Wert, der den Status der rechtlichen Einwilligung darstellt. true zeigt an, dass der Besucher die rechtliche Einwilligung gegeben hat, false zeigt an, dass der Besucher die rechtliche Einwilligung nie gegeben oder widerrufen hat. Dieses Feld ist erforderlich.
Ausgelöste Ausnahmen
TypBeschreibung
VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene visitor code ungültig ist (leer oder länger als 255 Zeichen).
Verhalten beim Widerruf der Einwilligung
Wenn Sie setLegalConsent() mit legalConsent=false aufrufen, löscht das SDK das kameleoonVisitorCode-Cookie nicht. Stattdessen wird das Ablaufdatum des Cookies nicht mehr verlängert, sodass das Cookie bis zu seinem natürlichen Ablauf bestehen bleibt. Wenn Ihre Compliance-Anforderungen das sofortige Entfernen der Cookie-Datei beim Opt-out verlangen, müssen Sie sie manuell mit den nativen Cookie-Verwaltungsmethoden Ihres Frameworks löschen. Das SDK entfernt die Datei nicht automatisch.

Ziele und Drittanbieter-Analytics

getEngineTrackingCode()

Kameleoon lässt sich in mehrere Analyselösungen integrieren, darunter Mixpanel, Google Analytics 4 und Segment. Um serverseitige Experiments korrekt zu verfolgen, rufen Sie die Methode getEngineTrackingCode() auf, nachdem der Besucher ein Experiment ausgelöst hat. Das SDK gibt JavaScript-Queue-Befehle für die Experiments zurück, die der Besucher in den letzten fünf Sekunden ausgelöst hat. Wenn Sie diesen Code in die Seite einfügen, verarbeitet Engine.js die Befehle und sendet die Expositions-Events über die aktive Analytics-Integration. Weitere Informationen zur Implementierung dieser Methode finden Sie unter Hybrid Experimentation.
$engineTrackingCode = $kameleoonClient->getEngineTrackingCode($visitorCode);
  • Um diese Funktion zu nutzen, implementieren Sie sowohl das PHP SDK als auch Kameleoon Engine.js. Da Engine.js in diesem Flow nur für das Tracking verwendet wird, können Sie das asynchrone Tag vor dem schließenden </body>-Tag installieren.
  • Wenn Sie Experiments nur in Kameleoon verfolgen möchten und keine Expositions-Events an Drittanbieter-Analytics-Tools senden müssen, verwenden Sie das JavaScript / TypeScript SDK. Diese Option eignet sich gut für Serverless Edge Compute-Plattformen. Das JavaScript / TypeScript SDK verfolgt Variationen automatisch, wenn Sie getVisitorCode aufrufen, sofern Sie die entsprechenden Experiment-Zuweisungen zur window.kameleoonQueue hinzufügen..
  • Sie können den zurückgegebenen Tracking-Code direkt in ein HTML-<script>-Tag einfügen.
<html lang="en">
  <body>
    <script>
      const engineTrackingCode = `
        window.kameleoonQueue = window.kameleoonQueue || [];
        window.kameleoonQueue.push(['Experiments.assignVariation', 123456, 7890, true]);
        window.kameleoonQueue.push(['Experiments.trigger', 123456, true]);
        window.kameleoonQueue.push(['Experiments.assignVariation', 234567, 8901, true]);
        window.kameleoonQueue.push(['Experiments.trigger', 234567, true]);
      `;
      const script = document.createElement('script');

      script.textContent = engineTrackingCode;
      document.body.appendChild(script);
    </script>

  </body>
</html>
In diesem Beispiel sind 123456 und 234567 Experiment-IDs und 7890 und 8901 sind Variations-IDs. In Ihrer Implementierung generiert das SDK diese Werte im zurückgegebenen Tracking-Code.
Argumente
NameTypBeschreibung
visitorCode (erforderlich)stringEindeutiger Identifikator des Besuchers.
Rückgabewert
TypBeschreibung
stringJavaScript-Code, der in die Seite eingefügt werden soll.

trackConversion()

  • 📨 Sendet Tracking-Daten an Kameleoon
Verwenden Sie diese Methode, um eine Konvertierung für ein bestimmtes Ziel und einen bestimmten Benutzer zu verfolgen. Diese Methode erfordert visitorCode und goalId. Darüber hinaus akzeptiert diese Methode auch optionale Argumente revenue, negative und metadata. Der visitorCode ist normalerweise identisch mit dem, der beim Auslösen des Experiments verwendet wurde. Die Methode trackConversion() gibt keinen Wert zurück. Diese Methode ist nicht blockierend, da der Serveraufruf asynchron erfolgt.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen bitte UniqueIdentifier.isUniqueIdentifier kann auch in anderen Sonderfällen nützlich sein, z. B. wenn Sie nicht auf den anonymen visitorCode zugreifen können, der dem Besucher ursprünglich zugewiesen wurde, aber Zugriff auf eine interne ID haben, die mit dem anonymen Besucher über die Funktionen zur Sitzungszusammenführung verbunden ist.
require "vendor/autoload.php";

$kameleoonClient = Kameleoon\KameleoonClientFactory::create("a8st4f59bj", "/tmp/kameleoon/client-php.json");
$visitorCode = $kameleoonClient->getVisitorCode();
$goalID = 83023;

$kameleoonClient->trackConversion($visitorCode, $goalID);

// if you operate with unique ID
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\UniqueIdentifier(true));
$kameleoonClient->trackConversion($visitorCode, $goalID, 0.0);

// Add metadata
$cd = new Kameleoon\Data\CustomData(1, "metadata");
$kameleoonClient->trackConversion($visitorCode, $goalID, 0.0, null, null, false, [$cd]);
Argumente
NameTypBeschreibungStandard
visitorCode (erforderlich)stringEindeutiger Identifikator des Besuchers.
goalId (erforderlich)intID des Ziels.
revenue (optional)floatUmsatz der Konvertierung.0
negative (optional)boolDefiniert, ob der Umsatz positiv oder negativ ist.false
metadata (optional)?array<CustomData>Ermöglicht es Ihnen, spezifische Werte für Custom Data festzulegen, die als Metadaten für das Ziel in der Kameleoon-App definiert wurden. Beispiel: [CustomData{id: 5, value: "Payment Type"}, CustomData{id: 6, value: "Delivery Method"}]. In diesem Beispiel sind 5 und 9 die Indizes der Custom Data (5 = „Payment Type”, 9 = „Delivery Method”).null
isUniqueIdentifier (veraltet)boolEin optionaler Parameter zur Angabe, ob der visitorCode ein eindeutiger Identifikator ist.false
metadata-Werte sind über Rohdaten-Exporte und die Ergebnisseite zugänglich.Wenn der Parameter metadata angegeben wird, verwendet Kameleoon diese angegebenen Werte für die aktuelle Konvertierung anstelle dessen, was zuvor mit der Methode addData() erfasst wurde. Wenn der Parameter weggelassen wird, verwendet Kameleoon die zuletzt verfolgten Werte für diese CustomData vor der Konvertierung und innerhalb desselben Besuchs.Kameleoon berücksichtigt nur die metadata-Werte, die explizit als Parameter an die Methode trackConversion() übergeben werden.Im folgenden Beispiel verknüpft Kameleoon die Konvertierung nur mit dem Custom Data-Wert, der explizit als Parameter angegeben wurde (hier: Index 5 mit dem Wert ‘Amex Credit Card’).
$kameleoonClient->addData(
    $visitorCode,
    new CustomData(5, "Credit Card"),
    new CustomData(9, "Express Delivery")
);
$kameleoonClient->trackConversion($visitorCode, 10, 0.0, null, null, false, [new CustomData(5, "Amex Credit Card")]);
Ausnahmen
TypBeschreibung
VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene visitor code ungültig ist. Er ist entweder leer oder länger als 255 Zeichen.

Datentypen

Sie können die folgenden vordefinierten Datentypen aus Kameleoon\Data verwenden.

Browser

Der hier gespeicherte Browser-Datensatz kann verwendet werden, um Experiment- und Personalisierungsberichte nach jedem damit verknüpften Wert zu filtern.
NameTypBeschreibung
browserType (erforderlich)intListe der Browser: CHROME, INTERNET_EXPLORER, FIREFOX, SAFARI, OPERA, OTHER.
version (optional)floatVersion des Browsers, die Gleitkommazahl repräsentiert die Haupt- und Nebenversion des Browsers.
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\Browser(Kameleoon\Data\Browser::CHROME));

$kameleoonClient->addData($visitorCode, new Kameleoon\Data\Browser(Kameleoon\Data\Browser::CHROME, 10.0));

PageView

NameTypBeschreibungStandard
url (erforderlich)stringURL der angezeigten Seite. Dieses Feld ist erforderlich.
title (erforderlich)?stringTitel der angezeigten Seite. Dieses Feld ist erforderlich.null
referrers (optional)?array<int>Referrer der angezeigten Seiten. Dieses Feld ist optional.null
Der Index (ID) des Referrers ist in unserem Back-Office auf der Konfigurationsseite für Akquisekanäle verfügbar. Achtung: Dieser Index beginnt bei 0, also hätte der erste Akquisekanal, den Sie für eine bestimmte Site erstellen, die ID 0, nicht 1.
$kameleoonClient->addData(
    $visitorCode,
    new Kameleoon\Data\PageView("https://url.com", "title", [3])
);

Conversion

Der hier gespeicherte Conversion-Datensatz kann verwendet werden, um Experiment- und Personalisierungsberichte nach jedem damit verknüpften Ziel zu filtern.
  • Jeder Besucher kann mehrere Conversion-Objekte haben.
  • Sie finden die goalId in der Kameleoon-App.
NameTypBeschreibungStandard
goalId (erforderlich)intID des Ziels.
revenue (optional)floatUmsatz der Konvertierung0
negative (optional)boolDefiniert, ob der Umsatz positiv oder negativ ist.false
metadata (optional)?array<CustomData>Metadaten der Konvertierung.null
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\Conversion(32, 10, false));

$cd = new Kameleoon\Data\CustomData(1, "metadata");
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\Conversion(32, 0.0, false, [$cd]));

CustomData

CustomData ermöglicht es, jedem Besucher beliebige Datentypen einfach zuzuordnen. Sie kann dann als Targeting-Bedingung in Segmenten oder als Filter/Aufschlüsselung in Experiment-Berichten verwendet werden. Weitere Informationen zu Custom Data finden Sie in diesem Artikel.
NameTypBeschreibungStandard
indexOrName (erforderlich)int/stringIndex oder Name der Custom Data. Entweder index oder name muss angegeben werden, um die Daten zu identifizieren.
values (erforderlich)string...Wert(e) der zu speichernden Custom Data.
overwrite (optional)boolFlag zur expliziten Steuerung, wie die Werte gespeichert werden und wie sie in Berichten erscheinen. Mehr erfahrentrue
  • Jeder Besucher darf nur eine CustomData für jeden eindeutigen index haben. Das Hinzufügen einer weiteren CustomData mit demselben index ersetzt die bestehende.
  • Den „index” der Custom Data finden Sie im Custom Data dashboard unter der Spalte „INDEX”.
  • Um zu verhindern, dass das SDK aus Datenschutzgründen Daten mit dem ausgewählten Index an die Kameleoon-Server sendet, aktivieren Sie die Option: Use this data only locally for targeting purposes beim Erstellen der Custom Data.
  • Das Hinzufügen einer mit einem Namen erstellten CustomData-Instanz, wenn die SDK-Instanzkonfiguration nicht aktuell ist oder der Name nicht registriert ist, führt dazu, dass die Daten ignoriert werden.
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\CustomData(1, "value"));

// With several values
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\CustomData(1, "value1", "value2"));

// To set the 'overwrite' flag to false
$kameleoonClient->addData($visitorCode, Kameleoon\Data\CustomData::newWithOverwrite(1, false, "value"));

// To use a name instead of the index
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\CustomData("my-custom-data", "value"));

// To use a name instead of the index
// and set the 'overwrite' flag to false
$kameleoonClient->addData($visitorCode, Kameleoon\Data\CustomData::newWithOverwrite("my-custom-data", false, "value"));

Device

NameTypBeschreibung
typeintListe der Geräte: PHONE, TABLET, DESKTOP. Dieses Feld ist erforderlich.
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\Device(Kameleoon\Data\Device::PHONE));

UserAgent

Verfolgen Sie die User-Agent-Informationen der Besucher. Serverseitige Experiments sind anfälliger für Bot-Traffic als clientseitige Experiments. Kameleoon verwendet die IAB/ABC International Spiders and Bots List, um dieses Problem zu lösen und bekannte Bots und Spider zu erkennen. Kameleoon verwendet auch das UserAgent-Feld, um Bots und anderen unerwünschten Traffic herauszufiltern, der Ihre Konvertierungsmetriken verfälschen könnte. Weitere Details finden Sie in unserem Hilfeartikel zum Bot-Filtering. Wenn Sie interne Bots verwenden, empfehlen wir, den Wert curl/8.0 des userAgent zu übergeben, um sie aus unseren Analytics auszuschließen.
NameTypBeschreibung
valuestringDer User-Agent-Wert, der mit Tracking-Anfragen gesendet wird. Dieses Feld ist erforderlich.
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\UserAgent("TestUserAgent"));

UniqueIdentifier

Wenn Sie keinen UniqueIdentifier für einen Besucher hinzufügen, wird der visitorCode als eindeutiger Besucheridentifikator verwendet, was für Cross-Device-Experimentation nützlich ist. Wenn Sie einen UniqueIdentifier für einen Besucher hinzufügen, verknüpft das SDK die gesendeten Daten mit dem Besucher, der dem angegebenen Identifikator zugeordnet ist. isUniqueIdentifier kann in einzigartigen Situationen hilfreich sein; zum Beispiel, wenn Sie nicht auf den anonymen visitorCode zugreifen können, der einem Besucher zugewiesen wurde, aber eine interne ID verwenden können, die durch die Sitzungszusammenführung mit diesem Besucher verknüpft ist.
NameTypBeschreibung
valueboolParameter zur Angabe, ob der visitorCode ein eindeutiger Identifikator ist. Dieses Feld ist erforderlich.
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\UniqueIdentifier(true));

OperatingSystem

OperatingSystem enthält Informationen über das Betriebssystem auf dem Gerät des Besuchers.
NameTypBeschreibung
typeintListe der Betriebssysteme: WINDOWS, MAC, IOS, LINUX, ANDROID und WINDOWS_PHONE. Dieses Feld ist erforderlich.
Jeder Besucher kann nur ein OperatingSystem haben. Das Hinzufügen eines zweiten OperatingSystem überschreibt das erste.
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\OperatingSystem(Kameleoon\Data\OperatingSystem::WINDOWS));
Cookie enthält Informationen über das Cookie, das auf dem Gerät des Besuchers gespeichert ist.
NameTypBeschreibung
cookiesarrayEine String-Objekt-Map, bestehend aus Cookie-Schlüsseln und -Werten. Dieses Feld ist erforderlich.
Jeder Besucher kann nur ein Cookie haben. Das Hinzufügen eines zweiten Cookie überschreibt das erste.
$cookie = new Kameleoon\Data\Cookie([
   "k1" => "v1",
   "k2" => "v2",
]);
$kameleoonClient->addData($visitorCode, $cookie);

Geolocation

Geolocation enthält die Geolokalisierungsdetails des Besuchers.
NameTypBeschreibung
country (erforderlich)stringDas Land des Besuchers.
region (optional)?stringDie Region des Besuchers.
city (optional)?stringDie Stadt des Besuchers.
postalCode (optional)?stringDie Postleitzahl des Besuchers.
latitude (optional)floatDie Breitengradkoordinate, die den Standort des Besuchers darstellt. Die Koordinatenzahl stellt Dezimalgrade dar.
longitude (optional)floatDie Längengradkoordinate, die den Standort des Besuchers darstellt. Die Koordinatenzahl stellt Dezimalgrade dar.
  • Jeder Besucher kann nur eine Geolocation haben. Das Hinzufügen einer zweiten Geolocation überschreibt die erste.
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\Geolocation("France", "Île-de-France", "Paris"));

ApplicationVersion

ApplicationVersion stellt die semantische Versionsnummer Ihrer Anwendung dar.
Ein Besucher kann nur eine ApplicationVersion haben. Das Hinzufügen einer zweiten Instanz überschreibt die erste.
NameTypBeschreibung
version (optional)stringDie Version der mobilen Anwendung. Dieses Feld muss der semantischen Versionierung folgen. Akzeptierte Formate sind major, major.minor oder major.minor.patch.
$kameleoonClient->addData($visitorCode, new Kameleoon\Data\ApplicationVersion("10")); // major

$kameleoonClient->addData($visitorCode, new Kameleoon\Data\ApplicationVersion("10.20")); // major.minor

$kameleoonClient->addData($visitorCode, new Kameleoon\Data\ApplicationVersion("10.20.30")); // major.minor.patch

Rückgabetypen

DataFile

Das DataFile enthält die SDK-Konfigurationsdetails. Es kann bei Bedarf um zusätzliche Informationen für Kunden erweitert werden. Wenn Sie weitere Details benötigen, wenden Sie sich bitte an Ihren Customer Success Manager.
NameTypBeschreibung
featureFlagsarray<string, FeatureFlag>Eine Map von FeatureFlag-Objekten, indiziert nach feature flag keys.
dateModifiedintDer Zeitstempel (in Millisekunden), der angibt, wann das DataFile zuletzt geändert wurde.
// Retrieves the array of feature flags from the DataFile.
// The array is keyed by feature flag identifiers, with each value being a FeatureFlag object.
$featureFlags = $dataFile->featureFlags;

// Retrieves the last modification timestamp of the DataFile.
// The value is an int representing milliseconds since the Unix epoch.
$dateModified = $dataFile->getDateModified();

FeatureFlag

Das FeatureFlag stellt eine Reihe von Eigenschaften dar, die ein feature flag selbst definieren — zum Beispiel seine Variations, Rules, den Umgebungsstatus und andere zugehörige Details. Es kann bei Bedarf um zusätzliche Informationen für Kunden erweitert werden. Wenn Sie weitere Details benötigen, wenden Sie sich bitte an Ihren Customer Success Manager.
NameTypBeschreibung
isEnvironmentEnabledboolGibt an, ob das feature flag in der aktuellen Umgebung aktiviert ist.
defaultVariationKeystringDer Schlüssel der mit dem feature flag verknüpften Standardvariation.
variationsarray<string, Variation>Eine Map von Variation-Objekten, indiziert nach Variationsschlüsseln.
rulesarray<Rule>Eine Liste von Rule-Objekten
// Check whether the feature flag is enabled in the current environment
$isEnvironmentEnabled = $featureFlag->isEnvironmentEnabled;

// Retrieve the key of the default variation
$defaultVariationKey = $featureFlag->defaultVariationKey;

// Retrieve the default variation object
$defaultVariation = $featureFlag->getDefaultVariation();

// Retrieve all variations of the feature flag as a map (key = variation key, value = Variation object)
$variations = $featureFlag->variations;

// Retrieve all targeting rules associated with the feature flag
$rules = $featureFlag->rules;

Rule

Die Rule stellt eine Reihe von Eigenschaften dar, die eine Regel selbst definieren — zum Beispiel ihre Variations. Sie kann bei Bedarf um zusätzliche Informationen für Kunden erweitert werden. Wenn Sie weitere Details benötigen, wenden Sie sich bitte an Ihren Customer Success Manager.
NameTypBeschreibung
variationsarray<string, Variation>Eine Map von Variation-Objekten, indiziert nach Variationsschlüsseln.
// Retrieve all variations of the rule as a map (key = variation key, value = Variation object)
$variations = $rule->variations;

Variation

Variation enthält Informationen über die dem Besucher zugewiesene Variation (oder die Standardvariation, wenn keine spezifische Zuweisung vorhanden ist).
NameTypBeschreibung
namestringDer Name der Variation.
keystringDer eindeutige Schlüssel, der die Variation identifiziert.
id?intDie ID der zugewiesenen Variation (oder null, wenn es sich um die Standardvariation handelt).
experimentId?intDie ID des mit der Variation verknüpften Experiments (oder null, wenn Standard).
variablesarray<string, Variable>Ein Array, das die Variablen der zugewiesenen Variation enthält, indiziert nach Variablennamen. Dies kann eine leere Sammlung sein, wenn keine Variablen zugeordnet sind.
  • Das Variation-Objekt liefert Details über die zugewiesene Variation und das zugehörige Experiment, während das Variable-Objekt spezifische Details zu jeder Variable innerhalb einer Variation enthält.
  • Stellen Sie sicher, dass Ihr Code den Fall behandelt, in dem id oder experimentId null sein können, was auf eine Standardvariation hinweist.
  • Das variables-Array kann leer sein, wenn keine Variablen mit der Variation verknüpft sind.
// Retrieving the variation name
$variationName = $variation->name;

// Retrieving the variation key
$variationKey = $variation->key;

// Retrieving the variation id
$variationId = $variation->id;

// Retrieving the experiment id
$experimentId = $variation->experimentId;

// Retrieving the variables map
$variables = $variation->variables;

Variable

Variable enthält Informationen über eine Variable, die mit der zugewiesenen Variation verknüpft ist.
NameTypBeschreibung
keystringDer eindeutige Schlüssel, der die Variable identifiziert.
typestringDer Typ der Variable. Mögliche Werte: BOOLEAN, NUMBER, STRING, JSON, JS, CSS
value?mixedDer Wert der Variable, der einer der folgenden Typen sein kann: bool, int, float, string, stdClass, array, null.
// Retrieving the variables map
$variables = $variation->variables;

// Variable type can be retrieved for further processing
$type = $variables["isDiscount"]->type;

// Retrieving the variable value by key
$isDiscount = (bool) $variables["isDiscount"]->value;

// Variable value can be of different types
$title = (string) $variables["title"]->value;

Veraltete Methoden

Diese Methoden sind veraltet und werden in der SDK-Version 5.0.0 entfernt.

getFeatureVariationKey()

  • 📨 Sendet Tracking-Daten an Kameleoon
Verwenden Sie stattdessen getVariation().
Um den feature variation key zu erhalten, rufen Sie die Methode getFeatureVariationKey() unseres SDK auf. Diese Methode nimmt einen visitorCode und einen featureKey als erforderliche Argumente, um den variation key für einen bestimmten Benutzer zu erhalten. Wenn ein Benutzer noch nie mit diesem feature flag verknüpft wurde, gibt das SDK zufällig einen variation key zurück (gemäß den feature flag-Regeln). Wenn ein Benutzer mit einem bestimmten visitorCode bereits mit diesem feature flag registriert ist, wird der vorherige variation key-Wert erkannt. Wenn der Benutzer keiner der Regeln entspricht, wird der Standardwert zurückgegeben, den wir im Kundenkonto definieren können. Sie müssen sicherstellen, dass in Ihrem Code eine ordnungsgemäße Fehlerbehandlung eingerichtet ist, wie im Beispiel rechts gezeigt, um potenzielle Ausnahmen abzufangen. Wenn Sie einen visitorCode angeben, verwendet die Methode getFeatureVariationKey() diesen als eindeutigen Besucheridentifikator, was für Cross-Device-Experimentation nützlich ist. Wenn Sie einen visitorCode angeben und den Parameter isUniqueIdentifier auf true setzen, verknüpft das SDK die gesendeten Daten mit dem Besucher, der dem angegebenen Identifikator zugeordnet ist.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen bitte UniqueIdentifier.isUniqueIdentifier kann auch in anderen Sonderfällen nützlich sein, z. B. wenn Sie nicht auf den anonymen visitorCode zugreifen können, der dem Besucher ursprünglich zugewiesen wurde, aber Zugriff auf eine interne ID haben, die mit dem anonymen Besucher über die Funktionen zur Sitzungszusammenführung verbunden ist.
$visitorCode = $kameleoonClient->getVisitorCode();
$featureKey = "featureKey";
$variationKey = "";

try {
    $variationKey = $kameleoonClient->getFeatureVariationKey($visitorCode, $featureKey);
    switch ($variationKey) {
        case "on":
            // Main variation key is selected for visitorCode
            break;
        case "alternativeVariation":
            // Alternative variation key
            break;
        default:
            // Default variation key
            break;
    }
} catch (Kameleoon\Exception\FeatureNotFound $e) {
    // Feature toggle not yet activated on Kameleoon's side - we consider the feature inactive.
} catch (Kameleoon\Exception\DataFileInvalid $e) {
    // It appears that the configuration has not been loaded
    // and there is no previously saved version of the configuration available.
} catch (Kameleoon\Exception\VisitorCodeInvalid $e) {
    // VisitorCode, which you passed to a method, is invalid and can't be accepted.
} catch (Kameleoon\Exception\FeatureEnvironmentDisabled){
    // The feature flag is disabled for the environment.
} catch (Exception $e) {
    // This is a generic Exception handler which will handle all exceptions.
    echo "Exception: ",  $e->getMessage(), "\n";
}
Argumente
NameTypBeschreibung
visitorCodestringEindeutiger Identifikator des Benutzers. Dieses Feld ist erforderlich.
featureKeystringSchlüssel des Features, das Sie einem Benutzer aussetzen möchten. Dieses Feld ist erforderlich.
timeout?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Dieses Feld ist optional. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.
isUniqueIdentifier (Veraltet)?boolEin optionaler Parameter zur Angabe, ob der visitorCode ein eindeutiger Identifikator ist. Wenn nicht angegeben, ist der Standardwert null. Das Feld ist optional.
Rückgabewert
TypBeschreibung
stringVariation key des feature flags, der für einen bestimmten visitorCode registriert ist.
Ausgelöste Ausnahmen
TypBeschreibung
FeatureNotFoundAusnahme, die anzeigt, dass die angeforderte Feature-ID nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist normalerweise normal und bedeutet, dass das feature flag auf Kameleoon-Seite noch nicht aktiviert wurde (der Code, der das Feature implementiert, ist jedoch bereits auf der Seite der Webanwendung bereitgestellt).
FeatureEnvironmentDisabledAusnahme, die anzeigt, dass das feature flag für die aktuelle Umgebung des Besuchers deaktiviert ist (z. B. production, staging oder development).
VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene visitor code ungültig ist (leer oder länger als 255 Zeichen).
DataFileInvalidAusnahme, die anzeigt, dass die Konfiguration nicht geladen wurde und keine zuvor gespeicherte Version der Konfiguration verfügbar ist.

getActiveFeatureListForVisitor()

Verwenden Sie stattdessen getActiveFeatures().
Diese Methode nimmt nur Eingabeparameter: visitorCode. Das Ergebnis enthält nur aktive feature flags für einen bestimmten Besucher.
$visitorCode = "visitor";
$arrayFeatureFlagKeys = $kameleoonClient->getActiveFeatureListForVisitor($visitorCode);
Argumente
NameTypBeschreibung
visitorCodestringEindeutiger Identifikator des Benutzers. Dieses Feld ist erforderlich.
timeout?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Dieses Feld ist optional. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.
Rückgabewert
TypBeschreibung
anyListe der feature flag keys, die für einen bestimmten visitorCode aktiv sind
Ausgelöste Ausnahmen
TypBeschreibung
VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene visitor code ungültig ist (leer oder länger als 255 Zeichen).
DataFileInvalidAusnahme, die anzeigt, dass die Konfiguration nicht geladen wurde und keine zuvor gespeicherte Version der Konfiguration verfügbar ist.

getActiveFeatures()

Verwenden Sie stattdessen getVariations().
Die Methode getActiveFeatures ruft Informationen zu den aktiven feature flags ab, die für den angegebenen visitor code verfügbar sind.
$visitorCode = "visitor";
$arrayActiveFeatures = $kameleoonClient->getActiveFeatures($visitorCode);
Argumente
NameTypBeschreibung
visitorCodestringEindeutiger Identifikator des Benutzers. Dieses Feld ist erforderlich.
timeout?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Dieses Feld ist optional. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.
Rückgabewert
TypBeschreibung
arrayEin Array, das die zugewiesenen Variationen der aktiven Features unter Verwendung der aktiven Feature-IDs als Schlüssel enthält.
Ausgelöste Ausnahmen
TypBeschreibung
VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene visitor code ungültig ist (leer oder länger als 255 Zeichen).
DataFileInvalidAusnahme, die anzeigt, dass die Konfiguration nicht geladen wurde und keine zuvor gespeicherte Version der Konfiguration verfügbar ist.

getFeatureVariable()

  • 📨 Sendet Tracking-Daten an Kameleoon
  • Verwenden Sie stattdessen getVariation().
  • Diese Methode hieß zuvor obtainFeatureVariable und ist seit SDK-Version 3.0.0 veraltet und wird in einer zukünftigen Version entfernt.
Um die Variable eines mit einem Benutzer verknüpften variation keys zu erhalten, rufen Sie die Methode getFeatureVariable() auf. Diese Methode nimmt einen visitorCode, einen featureKey und einen variableName als erforderliche Argumente, um eine Variable des variation keys für einen bestimmten Benutzer zu erhalten. Wenn der Benutzer noch nie mit diesem feature flag verknüpft wurde, gibt das SDK einen Variablenwert des variation keys zufällig zurück (gemäß den feature flag-Regeln). Wenn ein Benutzer mit einem bestimmten visitorCode bereits mit diesem feature flag registriert ist, erkennt die Methode den Wert der Variable für die zugeordnete Variation. Wenn der Benutzer keiner der Regeln entspricht, wird die Standardvariable zurückgegeben. Stellen Sie sicher, dass in Ihrem Code eine ordnungsgemäße Fehlerbehandlung eingerichtet ist, wie im Beispiel rechts gezeigt, um potenzielle Ausnahmen abzufangen. Wenn Sie einen visitorCode angeben, verwendet die Methode getFeatureVariable() diesen als eindeutigen Besucheridentifikator, was für Cross-Device-Experimentation nützlich ist. Wenn Sie einen visitorCode angeben und den Parameter isUniqueIdentifier auf true setzen, verknüpft das SDK die gesendeten Daten mit dem Besucher, der dem angegebenen Identifikator zugeordnet ist.
Der Parameter isUniqueIdentifier ist veraltet. Verwenden Sie stattdessen bitte UniqueIdentifier.isUniqueIdentifier ist in anderen Sonderfällen nützlich, z. B. wenn Sie nicht auf den anonymen visitorCode zugreifen können, der dem Besucher ursprünglich zugewiesen wurde, aber Zugriff auf eine interne ID haben, die mit dem anonymen Besucher über die Funktionen zur Sitzungszusammenführung verbunden ist.
$visitorCode = $kameleoonClient->getVisitorCode();
$featureKey = "featureKey";
$variableName = "variableName";

try {
    $variationValue = $kameleoonClient->getFeatureVariable($visitorCode, $featureKey, $variableName);
    // Your custom code depending of variableValue
} catch (Kameleoon\Exception\FeatureNotFound $e) {
    // Feature toggle not yet activated on Kameleoon's side - we consider the feature inactive.
} catch (Kameleoon\Exception\FeatureEnvironmentDisabled){
    // The feature flag is disabled for the environment.
} catch (Kameleoon\Exception\VisitorCodeInvalid $e) {
    // VisitorCode, which you passed to a method, is invalid and can't be accepted.
} catch (Kameleoon\Exception\FeatureVariableNotFound $e) {
    // Requested variable not defined on Kameleoon's side.
} catch (Kameleoon\Exception\DataFileInvalid $e) {
    // It appears that the configuration has not been loaded
    // and there is no previously saved version of the configuration available.
} catch (Exception $e) {
    // This is a generic Exception handler which will handle all exceptions.
    echo "Exception: " . $e->getMessage() . "\n";
}
Argumente
NameTypBeschreibung
visitorCodestringEindeutiger Identifikator des Benutzers. Dieses Feld ist erforderlich.
featureKeystringSchlüssel des Features, das Sie einem Benutzer aussetzen möchten. Dieses Feld ist erforderlich.
variableNamestringName der Variable, deren Wert Sie erhalten möchten. Dieses Feld ist erforderlich.
timeout?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Dieses Feld ist optional. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.
isUniqueIdentifier (Veraltet)?boolEin optionaler Parameter zur Angabe, ob der visitorCode ein eindeutiger Identifikator ist. Wenn nicht angegeben, ist der Standardwert null. Das Feld ist optional.
Rückgabewert
TypBeschreibung
AnyWert der Variationsvariable, der für einen bestimmten visitorCode für dieses feature flag registriert ist. Mögliche Typen: bool, int, float, string, object, array
Ausgelöste Ausnahmen
TypBeschreibung
FeatureNotFoundAusnahme, die anzeigt, dass die angeforderte Feature-ID nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist normalerweise normal und bedeutet, dass das feature flag auf Kameleoon-Seite noch nicht aktiviert wurde (der Code, der das Feature implementiert, ist jedoch bereits auf der Seite der Webanwendung bereitgestellt).
FeatureEnvironmentDisabledAusnahme, die anzeigt, dass das feature flag für die aktuelle Umgebung des Besuchers deaktiviert ist (z. B. production, staging oder development).
VisitorCodeInvalidAusnahme, die anzeigt, dass der angegebene visitor code ungültig ist (leer oder länger als 255 Zeichen).
FeatureVariableNotFoundAusnahme, die anzeigt, dass die angeforderte Variable nicht gefunden wurde. Überprüfen Sie, ob die ID (oder der Schlüssel) der Variable mit Ihrem Code übereinstimmt.
DataFileInvalidAusnahme, die anzeigt, dass die Konfiguration nicht geladen wurde und keine zuvor gespeicherte Version der Konfiguration verfügbar ist.

getFeatureVariationVariables()

  • Verwenden Sie stattdessen getVariation().
  • Diese Methode hieß zuvor getFeatureAllVariables und wurde in der SDK-Version 4.0.0 entfernt.
Um alle Feature-Variablen abzurufen, rufen Sie die Methode getFeatureVariationVariables() auf. Eine Feature-Variable kann einfach über unsere Webanwendung geändert werden. Diese Methode nimmt featureKey und variationKey als erforderliche Argumente. Sie gibt die Daten mit dem Objekttyp zurück, wie auf der Weboberfläche definiert. Die Methode löst einen Fehler aus (FeatureNotFound), wenn das angeforderte feature flag nicht in der Client-Konfiguration des SDK gefunden wurde. Wenn der variation key nicht gefunden wird, löst die Methode den Fehler FeatureVariationNotFound aus.
$featureKey = "test_feature_variables";
$variationKey = "on";

try {
    $variables = $kameleoonClient->getFeatureVariationVariables($featureKey, $variationKey);
    $firstName = $variables["firstName"];
} catch (Kameleoon\Exception\FeatureNotFound $e) {
    // The feature is not yet activated on Kameleoon's side.
} catch (Kameleoon\Exception\FeatureEnvironmentDisabled){
    // The feature flag is disabled for the environment.
} catch (Kameleoon\Exception\FeatureVariationNotFound $e) {
    // The variation is not yet activated on Kameleoon's side, i.e., the associated experiment is not online.
} catch (Kameleoon\Exception\DataFileInvalid $e) {
    // It appears that the configuration has not been loaded
    // and there is no previously saved version of the configuration available.
} catch (Exception $e) {
    // This is a generic Exception handler which will handle all exceptions.
    echo "Exception: " . $e->getMessage() . "\n";
}
Argumente
NameTypBeschreibung
featureKeystringSchlüssel des feature flags, das Sie erhalten möchten. Dieses Feld ist erforderlich.
variationKeystringSchlüssel der Variation, die Sie erhalten möchten. Dieses Feld ist erforderlich.
timeout?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Dieses Feld ist optional. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.
Rückgabewert
TypBeschreibung
AnyWert der Variationsvariable, der für einen bestimmten visitorCode für dieses feature flag registriert ist. Mögliche Typen: bool, int, float, string, object, array
Ausgelöste Ausnahmen
TypBeschreibung
FeatureNotFoundAusnahme, die anzeigt, dass die angeforderte Feature-ID nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist normalerweise normal und bedeutet, dass das feature flag auf Kameleoon-Seite noch nicht aktiviert wurde (der Code, der das Feature implementiert, ist jedoch bereits auf der Seite der Webanwendung bereitgestellt).
FeatureEnvironmentDisabledAusnahme, die anzeigt, dass das feature flag für die aktuelle Umgebung des Besuchers deaktiviert ist (z. B. production, staging oder development).
FeatureVariationNotFoundAusnahme, die anzeigt, dass die angeforderte Variations-ID nicht in der internen Konfiguration des SDK gefunden wurde. Dies ist normalerweise normal und bedeutet, dass das der Variation entsprechende Experiment auf Kameleoon-Seite noch nicht aktiviert wurde.
DataFileInvalidAusnahme, die anzeigt, dass die Konfiguration nicht geladen wurde und keine zuvor gespeicherte Version der Konfiguration verfügbar ist.

getFeatureList()

Gibt eine Liste der feature flag keys zurück, die derzeit für das SDK verfügbar sind.
$arrayFeatureKeys = $kameleoonClient->getFeatureList();
Argumente
NameTypBeschreibung
timeout (optional)?intTimeout (in Millisekunden). Dieser Parameter gibt die maximale Zeit an, die die Methode blockieren kann, um auf ein Ergebnis zu warten. Wenn kein Timeout-Wert angegeben wird, verwendet das SDK den in Ihrer Konfiguration angegebenen default_timeout.
Rückgabewert
TypBeschreibung
array<string>Liste der feature flag keys