در شی گرایی فضای نام مفهومی است که بوسیله آن چندین کلاس را درون یک نام گروه بندی می کنیم. فضای نام تنها در شی گرایی کاربرد ندارد، بلکه در دیگر زمینه مانند سیستم عامل کاربرد دارد. در سیستم عامل هر دایرکتوری می تواند شامل چندین فایل یا چندین زیر دایرکتوری باشد. چیزی که مهم است، آن است که درون یک دایرکتوری، نمی توان دو فایل یا دو زیر دایرکتوری همنام داشته باشیم ولی در دو دایرکتوری متفاوت، می توانیم فایل های همنام و همسان داشته باشیم.

در این راستا (در این مورد)، درون یک دایرکتوری در پروژه پی اچ پی نیز نمی توانیم دو کلاس همنام داشته باشیم، زیرا در زمان ساخت یک نمونه از کلاس، پی اچ پی نمی تواند درک کند که شما کدام کلاس را مشخص کرده اید. پس باید فضای نام های متفاوت داشته باشیم، تا دو کلاس همنام را در هر یک از آنها قرار دهیم. همچنین در خود یک فضای نام نیز نمی توانیم دو کلاس همنام داشته باشیم.

فضاهای نام فایل های کدهای کلاس های پی اچ پی هستند که درون دایرکتوری های مجازی نگهداری می شوند. برای ایجاد یک فضای نام باید در بالای کدهای کلاس درون فایل، واژه کلیدی namespace را بنویسیم و سپس مسیری را مشخص کنیم که همان فضای نامی خواهد بود که کلاس در آن قرار می گیرد. هر بخش از مسیر فضای نام نیز بوسیله کاراکتر \ از دیگری جدا می شود. بنابراین هر دایرکتوری مجازی درون فضای نام، با یک \ از دیگری جدا می شود.

یک فایل به نام Book.php ایجاد کنید که می خواهیم درون آن کلاسی به نام Book ایجاد کنیم که این کلاس درون فضای نام Bookstore\Domain قرار دارد. بنابراین دو دایرکتوری مجازی BookStore\Domain فضای نام را پدید می آورند و همچنین دایرکتوری Domain درون داریرکتوری بالایی Bookstore قرار دارد. توجه کنید که دستور زیر باید در آغاز فایل نوشته شود و سپس نام کلاس و کدهای آن، نوشته شوند تا کلاس درون فضای نام شناخته شده باشد.

پس از ایجاد فضای نام و خود کلاس، باید یک نمونه را از کلاس و بوسیله عملگر new ایجاد کنیم. چون کلاس Book در فضای نام Bookstore\Domain قرار دارد، پس برای دسترسی به کلاس های آن مانند کلاس باید مسیر فضای نام را نوشته و در پایان باید نام کلاس نوشته شود. در کد زیر از کلاس Book یک نمونه ایجاد شده است.

 شیوه دیگر به کار گیری عملگری به نام use است. در هر فایلی که بخواهیم فضای نام و کلاس های آن را به کار ببریم، باید همانند دستورهای زیر در هر خط یک کلاس از هر فضای نام را به درون فایل ضمیمه کنیم. در کدهای زیر دو کلاس به نام های Book و Customer درون فضای نام Bookstore/Domain هستند و هر کدام را با عبارت use به فایل ضمیمه کرده ایم. با به کار گیری عملگر use دیگر نیازی به نوشتن همه مسیر فضای نام نیست.

نام مستعار

اگر دو کلاس همنام (مانند کلاس Book) را از فضاهای نام متفاوت به درون یک فایلپی اچ پی پیوست کنید، حتی اگر use را نیز به کار ببرید، بازهم پی اچ پی ایراد می گیرد، زیرا نمی داند شما از کدام کلاس های همنام نمونه ایجاد کرده اید. در اینجا است که نام مستعار (Alias) به کار خواهد آمد. برای اینکه به یکی از کلاس های همنام یک نام مستعار بدهید تا در همین فایل کنونی، با کلاس دیگر نامی متفاوت داشته باشد، باید واژه کلیدی as را به شیوه زیر به کار ببرید.

بنابراین با توجه به کد بالا، از این پس با نام BookLibrary به کلاس Book در فضای نام  /Libraray/Domain اشاره می شود. پس می بینید که مشکل پیوست دو کلاس همنام از دو فضای نام متفاوت نیز پوشش داده شد. به یاد داشته باشید که درون یک فضای نام، نمی توان دو کلاس همنام، حتی در فایل های متفاوت داشت.