Correct, what you are seeing is the expected behavior. Cloud Files has no concept of nested directories (namely, there is only one top-level of containers). However, you can simulate a hierarchy, like in your screenshot, by adding a delimiter (like a '/') to the object name.
So if your archive has a nested structure, each file path is flattened into a string before being uploaded, and that string is used as the object name.
According to the php-opencloud docs, if you omit the container name (like you are doing in your example), then containers will be created based on the filenames inside the archive.