加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

swoft框架,开发遇到基本坑

(2018-06-05 09:17:35)
标签:

it

1.看好红色的部分,是提示注解带有单引号《'》的字符,检查下注解URL中是不是带有单引号《'》的符号,如果有,统一改成《""》双引号的。保存就可以了
Stack trace:
#0 /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php(446): Doctrine\Common\Annotations\AnnotationException::syntaxError('Expected PlainV...')
#1 /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php(1068): Doctrine\Common\Annotations\DocParser->syntaxError('PlainValue')
#2 /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php(1020): Doctrine\Common\Annotations\DocParser->PlainValue()
#3 /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php(874): Doctrine\Common\Annotations\DocParser->Value()
#4 /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.p in /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php on line 42
PHP Fatal error:  Uncaught Doctrine\Common\Annotations\AnnotationException: [Syntax Error] Expected PlainValue, got ''' at position 12 in class App\Controllers\TestController. in /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php:42
 
 
 
2.此问题是端口被占用,到swoft下的.en文件修改一个叫8181的端口,保存就行了
http://s12/mw690/002lwdEHzy7l13VrAnh4b&690


3.如果出现访问URL是对,但老是报404错误时,一定是你的注解头多一个或者多个*号了,一定是两个*号开头,多也不行少了不行。如这种情况
问题404
{"msg":"Route not found for \/test\/index","file":"\/server\/www\/swoft\/vendor\/swoft\/http-server\/src\/Router\/HandlerAdapter.php","line":49,"code":404}
问题所在

4.当老是提示控制器Controller命名重复时,这是要检查下该控制器命名空间导入是否正确,导入的Controller是App\Controllers;后面有s,如果情况
http://s12/mw690/002lwdEHzy7l1caRCfp8b&690
解决问题,命名空间是App\Controllers,   不是App\Controller

5. 提示导入@Inject类,如图
http://s2/mw690/002lwdEHzy7l1nwvov7d1&690
解决方案-》在controller中导入Inject(说准确点是,哪个类缺少inject类,在该类导入其类)
6.该错误提示该类下缺少导入Bean类,在该类导入就可以了,错误提示,如图
http://s15/mw690/002lwdEHzy7l1o9bI8Cbe&690
解决方案-》在该提示类导入Bean类,保存就OK
7.swoft验证器,一定要注意,use相关的组件,如@Number, ValidatorFrom...,所有提示Annotations都是告诉你最近的注解有误或者未use相关组件,每个错误控制台都有提示的,如图

http://s9/mw690/002lwdEHzy7l4ehh9Rm58&690
提示找不到相关ValidatorFrom的组件,use 进来就可以了

8.执行url提示socket问题时,如果
该提示是告诉我们系统找不到这个路劲,要去检查下注解是否正确,像我这么粗心,要不是缺了/,就是prefix
9.所有看到AnnotationException都是注解问题,需要仔细看哪里有问题,想我就把$符号打成成@符号,如图
http://s13/mw690/002lwdEHzy7l5WghSyw2c&690
解决方案:把提示所有带有@符号错误的,都改成$符号,这是语法的错误,注意,php变量是$符号

10.总结java.net.SocketException: Connection reset几个解决方案,提示如下
http://s8/mw690/002lwdEHzy7l5XTnAxxc7&690
此问题是提示路由有问题,访问不到,需要重新设置
 1.检查@Controller是否注解正确,正确写法是@Controller(prefix="/route") 或 @Controller("/route")
 2.检查@RequestMapping注解是不是正确,正确写法是@RequestMapping(route="search",method={RequestMethod::GET}),method没有大写,不要写成Method,这样就男女不分了


11.引入共有方法运行提示该方法是空是,解决方法是在引入方法上面加入@Inject()注解

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有