diff --git a/src/bindings/swig/hammer.i b/src/bindings/swig/hammer.i
index f784f31e7c69bb9341d8f01410cd3fcedf3fae03..07ae79cc9b6b54bb1c3d98bb8581344367d1f00e 100644
--- a/src/bindings/swig/hammer.i
+++ b/src/bindings/swig/hammer.i
@@ -1,8 +1,32 @@
 %module hammer
+%nodefaultctor;
 
-%include "typemaps.i"
 %include "stdint.i"
 
+#if defined(SWIGPHP)
+%ignore HCountedArray_;
+%typemap(in) uint8_t* {
+
+ }
+%typemap(out) uint8_t* {
+
+ }
+%typemap(in) void*[] {
+
+ }
+%typemap(in) uint8_t {
+
+ }
+%typemap(out) HBytes* {
+
+ }
+%typemap(out) struct HCountedArray_* {
+
+ }
+#else
+  #warning no Hammer typemaps defined
+#endif
+
  // All the include paths are relative to the build, i.e., ../../. If you need to build these manually (i.e., not with scons), keep that in mind.
 %{
 #include "allocator.h"
@@ -12,5 +36,3 @@
 %include "allocator.h"
 %include "hammer.h"
 
-%apply const char* { const uint8_t* }
-