I'm not a fan of your example and explanation. Also, code is not the best.
All houses must have a type and a color before they can be used.
Here I understand what you are saying, but that is not how a business would explain it, and also not the way you would talk about it in real life.
You would probably say something like: "House must be of a specific type that we can build and a specific color that we have in stock".
Notice the length of the code: that extra line we have to write just so we can have a Red Bungalow for our house.
The length of the code doesn't mean anything in programming. We need to capture business behavior with it which sometimes can lead to longer code.
You just have a plain brick and wood template of a house. In real life, you still have to do the extra work of painting and building the house to your desired color and type ($myHouse->set_housetype_and_color("Bungalow","Red");).
You see how you've mentioned some terms here but they were not captured in code. So apparently from what you've said, a house can be built without color, but it would be plain brick and wood. Also, you are mentioning painting and even building and there is no reference to it in the code.
Observe the fewer lines. Here, upon creation of your House (object), you are given a new house that's been all set up with all the attributes you need already incorporated, ready for us.
Again, fewer lines don't mean anything.
So to sum it up. From your description house has a true dependency only on type, bricks, and wood. House can be painted and even built. So you need to capture those things within the code. You went about describing things that are not related to the constructor. The point of the constructor is simple. It provides an initial state and/or nesesities required for building that object which is commonly called dependencies.