The skeleton that all S4 features are built on — without this, no other S4 issue can start.
ZammadClient is the entry point class implementing ClientInterface. Constructor accepts a RequestHandlerInterface — all HTTP communication is delegated, no direct Guzzle dependency. The class holds a $repos cache array for memoized repository instances.
RepositoryRegistry must already exist (S3 scope) — all resource resolution flows through it. The class structure, namespace (ZammadAPIClient), and DI-compatible constructor are the foundation that 4.1 (connect), 4.2 (__call), 4.3 (resource wrapper integration), and 4.4 (onBehalfOf) depend on.
Produces:
ZammadClient (class skeleton with constructor)
Acceptance Criteria
The skeleton that all S4 features are built on — without this, no other S4 issue can start.
ZammadClientis the entry point class implementingClientInterface. Constructor accepts aRequestHandlerInterface— all HTTP communication is delegated, no direct Guzzle dependency. The class holds a$reposcache array for memoized repository instances.RepositoryRegistrymust already exist (S3 scope) — all resource resolution flows through it. The class structure, namespace (ZammadAPIClient), and DI-compatible constructor are the foundation that 4.1 (connect), 4.2 (__call), 4.3 (resource wrapper integration), and 4.4 (onBehalfOf) depend on.Produces:
ZammadClient(class skeleton with constructor)Acceptance Criteria