5.6 Types
Prev | Chapter 5 Project components | Next

## 5.6 Types

### 5.6.1 Basics

Besides the simple types (strings, integer, booleans) you can use in the parameters of tasks, there are more complex Phing `Types`. As mentioned above, they are passed to a task by using nesting tags:

    <task>
      <type />
    </task>

    <!-- or: -->

    <task>
      <type1>
        <subtype1>
          <!-- etc. -->
        </subtype1>
      </type1>
    </task>

Note that types may consist of multiple nested tags -- and multiple levels of nested tags, as you can see in the second task call above.

### 5.6.2 Referencing Types

An additional fact about types you should notice is the possibility of `referencing` type instances, i.e. you define your type somewhere in your build file and assign an id to it. Later, you can refer to that type by the id you assigned. Example:

    <project>
      <fileset id="foo">
        <include name="*.php" />
      </fileset>

      <!-- Target that uses the type -->
      <target name="foo" >
        <copy todir="/tmp">
          <fileset refid="foo" />
        </copy>
      </target>
    </project>

As you can see, the type instance is assigned an id with the `id` attribute and later on called by passing a plain `fileset` tag to `CopyTask` that only contains the `refid` attribute.

Prev | Up | Next
5.5 Tasks | Home | 5.7 Basic Types